def post(self): post_args = tornado.escape.json_decode(self.request.body) post_lat, post_lng = post_args['lat'], post_args['lng'] del post_args['lat'] del post_args['lng'] # post_args is now a dictionary with urls as keys and corresponding tags # for values (each url has only one tag) closest_shelter = self.shelters[distance_helpers.get_closest(post_lat, post_lng, self.shelters)] http = tornado.httpclient.AsyncHTTPClient() params = { 'manifest': ','.join(['%s,%s' % (x, post_args[x]) for x in post_args.keys()]), 'pickup_name': 'Pickup Place', 'pickup_address': getAddressFromGeo(post_lat, post_lng), 'pickup_phone_number': '111-111-1111', 'dropoff_name': closest_shelter['name'], 'dropoff_address': getAddressFromGeo(closest_shelter['lat'], closest_shelter['lng']), 'dropoff_phone_number': closest_shelter['phone'], 'robo_pickup': "00:00:01", 'robo_pickup_complete': "00:00:02", 'robo_dropoff': "00:00:03", 'robo_delivered': "00:03:00" } request = tornado.httpclient.HTTPRequest( 'https://api.postmates.com/v1/customers/%s/deliveries' % config.USER, method='POST', auth_username=config.POSTMATES_API_KEY, body=urllib.parse.urlencode(params) ) response = yield tornado.gen.Task(http.fetch, request) response = json.loads(response.body.decode()) r.set(response['id'], json.dumps(post_args)) self.write(response)