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()