def analyseReceivedLine(self, inputline): self.cmd={} try: if inputline.startswith('{'): self.cmd = jsonpickle.decode(inputline) except Exception as e: MrcLogger.info('Exception caught! '+e.__str__())
def do_POST(self): mc=MrcCommander() wholerfile='' for inputline in self.rfile: wholerfile+=inputline inputline = inputline.rstrip() mc.analyseReceivedLine(inputline) if mc.cmd: MrcLogger.info('QUERY: '+inputline) break if inputline=='': MrcLogger.error('QUERY: INVALID! No line in HTTPHandler\'s rfile could pass analysis!') MrcLogger.error(wholerfile) break MrcLogger.error('QUERY: '+inputline+' is not parseable') if mc.cmd and len(mc.cmd)!=0: mc.process() reply=mc.res if reply=='': reply='{"error":"empty reply"}' MrcLogger.info('REPLY: '+reply) self.send_response(200) self.send_header('Access-Control-Allow-Origin', 'http://'+MrcSettings.BASE_WEBSERVER_HOST) self.end_headers() self.wfile.write(reply) return
def do_GET(self): MrcLogger.info('[GET] START') parsed_path = urlparse.urlparse(self.path) message_parts = [ 'CLIENT VALUES:', 'client_address=%s (%s)' % (self.client_address, self.address_string()), 'command=%s' % self.command, 'path=%s' % self.path, 'real path=%s' % parsed_path.path, 'query=%s' % parsed_path.query, 'request_version=%s' % self.request_version, '', 'SERVER VALUES:', 'server_version=%s' % self.server_version, 'sys_version=%s' % self.sys_version, 'protocol_version=%s' % self.protocol_version, '', 'HEADERS RECEIVED:', ] for name, value in sorted(self.headers.items()): message_parts.append('%s=%s' % (name, value.rstrip())) message_parts.append('') message = '\r\n'.join(message_parts) self.send_response(200) self.end_headers() self.wfile.write(message) MrcLogger.info('[GET] '+message) return
def run(self): self.server = MrcThreadedHTTPServer(('', self.portnum), MrcHTTPHandler) sa=self.server.socket.getsockname() print ' ... HTTP server launched on '+str(sa[0])+' port '+str(sa[1])+' ...' MrcLogger.info(' ... HTTP server launched on '+str(sa[0])+' port '+str(sa[1])+' ...') self.server.serve_forever() print ' ... HTTP server stopped ...' MrcLogger.info(' ... HTTP server stopped ...')
def goToSleep(self): try: with self.lock: print ' ... MrcPlayerInstance going to sleep ...' MrcLogger.info(' ... MrcPlayerInstance going to sleep ...') self.eventDequeuerThread.goToSleep() self.eventDequeuerThread.join() self.playlist.clean() pygame.mixer.quit() self.wokenUp=False except pygame.error as e: MrcLogger.error('pygame.error caught in MrcPlayer.goToSleep: '+e.__str__()) except Exception as e: MrcLogger.error('Exception caught in MrcPlayer.goToSleep: '+e.__str__())
def wakeUp(self): try: with self.lock: print ' ... MrcPlayerInstance waking up ...' MrcLogger.info(' ... MrcPlayerInstance waking up ...') pygame.init() pygame.mixer.init() self.eventDequeuerThread.start() pygame.mixer.music.set_endevent(pygame.USEREVENT) self.wokenUp=True except pygame.error as e: MrcLogger.error('pygame.error caught in MrcPlayer.wakeUp: '+e.__str__()) except Exception as e: MrcLogger.error('Exception caught in MrcPlayer.wakeUp: '+e.__str__())
def interpret(userinput): userinput=userinput.strip() MrcLogger.info('userinput ['+userinput+']') if(userinput=='Q'): return False return True
def interpret(userinput): userinput=userinput.strip() MrcLogger.info('userinput ['+userinput+']') if(userinput=='Q'): return False return True ################### ###### MAIN ####### ################### print print '---------- MusicRemoteControlServer ------------' print MrcLogger.info('---------- MusicRemoteControlServer ------------') if len(sys.argv)!=2: print 'ERROR: you need to specify a port number as first argument!!' MrcLogger.error('no first argument for specifying the port number : exiting...') usage() exit() portnum=0 try: portnum=int(sys.argv[1]) except ValueError: print 'ERROR: you need to specify a port number as first argument!!' MrcLogger.error('first argument failed to be parsed as a port number : exiting...') usage() exit()