def get_current_user(self): # Check if cookie exists user_jwt = self.get_cookie("JWT") print(user_jwt) if user_jwt != None: # If it does, decode it decoded_user_jwt = jwt.decode(user_jwt, config["JWT_SECRET"], algorithms=["HS256"]) # Return users info from Redis return json.loads(r.get("users:" + decoded_user_jwt["uuid"])) else: # If no cookie, no user exists return None
def post(self): event_data = json.loads(self.request.body) # Look up UUID of user based on request_id of webhook event user_uuid = r.get("requests:" + event_data["meta"]["resource_id"]) # Get the websocket connection that corresponds to that user UUID user_socket = RequestStatusHandler.socket_connections[user_uuid] event_message = {"type": event_data["event_type"], "status": event_data["meta"]["status"]} print("event message:") print(event_messageh) # If status is "accepted" then obtain request details to send to client if event_data["meta"]["status"] == "accepted": user_access_token = json.loads(r.get("users:" + user_uuid))["tokens"]["access"] request_details = yield RideHandler.get_request(user_access_token, event_data["meta"]["resource_id"]) print("Request details:") print(request_details) # Make sure status is still accepted since webhook event if (request_details["status"] == "accepted"): # Details will contain info about driver and vehicle and eta event_message["details"] = { # Driver schema "driver": { "name": request_details["driver"]["name"], "rating": request_details["driver"]["rating"], "phone_number": request_details["driver"]["phone_number"], "picture_url": request_details["driver"]["picture_url"] }, "eta": request_details["eta"], # Vehicle schema "vehicle": { "make": request_details["vehicle"]["make"], "model": request_details["vehicle"]["model"], "license_plate": request_details["vehicle"]["license_plate"], "picture_url": request_details["vehicle"]["picture_url"] } } user_socket.write_message(json.dumps(event_message))