def oauth_start(self): # get oauth client consumer = oauth.Consumer(settings.LAT_CONSUMER_KEY, settings.LAT_CONSUMER_SECRET) client = oauth.Client(consumer) # get request token request_body = urllib.urlencode(settings.LAT_PARAMETERS, True) resp, content = client.request(settings.LAT_REQUEST_TOKEN_URL, 'POST', headers=settings.LAT_HEADERS, body=request_body) if resp.get('status') != '200': raise Exception('Invalid response %s.' % resp.get('status')) request_token = dict(parse_qsl(content)) ns = Kv.NS_LAT_OAUTH key = 'shreyans' Kv.create_or_update_from_ns_and_key(ns, key, request_token) # redirect user to authorization url base_url = urlparse.urlparse(settings.LAT_AUTHORIZE_URL) query = parse_qs(base_url.query) query['oauth_token'] = request_token.get('oauth_token') url = (base_url.scheme, base_url.netloc, base_url.path, base_url.params, urllib.urlencode(query, True), base_url.fragment) authorize_url = urlparse.urlunparse(url) self.redirect(authorize_url)
def oauth_callback(self): oauth_verifier = self.get_argument('oauth_verifier', None) oauth_token = self.get_argument('oauth_token', None) if not oauth_verifier or not oauth_token: return self.write("One or more of the following were missing: oauth_verifier, oauth_token") ns = Kv.NS_LAT_OAUTH key = 'shreyans' request_token = Kv.find_by_ns_and_key(ns, key) if not request_token: return self.write("Request token not found for key: %s" % key) token = oauth.Token(request_token.get('oauth_token'), request_token.get('oauth_token_secret')) token.set_verifier(oauth_verifier) consumer = oauth.Consumer(settings.LAT_CONSUMER_KEY, settings.LAT_CONSUMER_SECRET) client = oauth.Client(consumer, token) request_body = urllib.urlencode(settings.LAT_PARAMETERS, True) resp, content = client.request(settings.LAT_ACCESS_TOKEN_URL, 'POST', headers=settings.LAT_HEADERS, body=request_body) access_token = dict(parse_qsl(content)) Kv.create_or_update_from_ns_and_key(ns, key, access_token) self.redirect("/beacon")
def oauth_callback(self): oauth_verifier = self.get_argument('oauth_verifier', None) oauth_token = self.get_argument('oauth_token', None) if not oauth_verifier or not oauth_token: return self.write( "One or more of the following were missing: oauth_verifier, oauth_token" ) ns = Kv.NS_LAT_OAUTH key = 'shreyans' request_token = Kv.find_by_ns_and_key(ns, key) if not request_token: return self.write("Request token not found for key: %s" % key) token = oauth.Token(request_token.get('oauth_token'), request_token.get('oauth_token_secret')) token.set_verifier(oauth_verifier) consumer = oauth.Consumer(settings.LAT_CONSUMER_KEY, settings.LAT_CONSUMER_SECRET) client = oauth.Client(consumer, token) request_body = urllib.urlencode(settings.LAT_PARAMETERS, True) resp, content = client.request(settings.LAT_ACCESS_TOKEN_URL, 'POST', headers=settings.LAT_HEADERS, body=request_body) access_token = dict(parse_qsl(content)) Kv.create_or_update_from_ns_and_key(ns, key, access_token) self.redirect("/beacon")
def get_current_location(return_map_url=False, granularity='best'): ns = Kv.NS_LAT_OAUTH key = 'shreyans' lat_oauth_token_dict = Kv.find_by_ns_and_key(ns, key) if not lat_oauth_token_dict: return None, None, None http = oauth_wrap.get_wrapped_http(lat_oauth_token_dict) url = settings.LAT_ENDPOINT % 'currentLocation' params = { 'granularity':granularity, } url = url + "?" + urllib.urlencode(params) resp, content = http.request(url) if resp.get('status') != '200': return None, None, None content = simplejson.loads(content) lat = content.get('data').get('latitude') lon = content.get('data').get('longitude') map_url = static_map_from_lat_lon(lat, lon) if return_map_url: return lat, lon, map_url else: return lat, lon
def get_current_location(return_map_url=False, granularity='best'): ns = Kv.NS_LAT_OAUTH key = 'shreyans' lat_oauth_token_dict = Kv.find_by_ns_and_key(ns, key) if not lat_oauth_token_dict: return None, None, None http = oauth_wrap.get_wrapped_http(lat_oauth_token_dict) url = settings.LAT_ENDPOINT % 'currentLocation' params = { 'granularity': granularity, } url = url + "?" + urllib.urlencode(params) resp, content = http.request(url) if resp.get('status') != '200': return None, None, None content = simplejson.loads(content) lat = content.get('data').get('latitude') lon = content.get('data').get('longitude') map_url = static_map_from_lat_lon(lat, lon) if return_map_url: return lat, lon, map_url else: return lat, lon