class UIDClientHandler(threading.Thread): def __init__(self, clientsocket): super(UIDClientHandler, self).__init__() self.clientsocket = clientsocket self.ass = Backend() def generate_response(self, request): """ Use the servers stored data to respond to a client Returns the appropriate response """ global uids resp = {} liked = request["liked"] disliked = request["disliked"] images = self.ass.get_recommendations(liked, disliked) print "REC: {}".format(images) resp["type"] = "OK" resp["recommendations"] = images # resp["type"] = "ERROR" # resp["body"] = "Exception while handling request" return resp def run(self): """ Client handling Thread """ print "Connected to {}".format(self.clientsocket.getpeername()) while True: try: reqstr = self.clientsocket.recvln() if not reqstr: return req = json.loads(base64.b64decode(reqstr)) print "REQ: {}".format(req) resp = self.generate_response(req) print "RESP: {}".format(resp) respstr = base64.b64encode(json.dumps(resp)) self.clientsocket.sendln(respstr) except socket.error: return