示例#1
0
    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)
示例#2
0
    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")
示例#3
0
    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)
示例#4
0
    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")
示例#5
0
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
示例#6
0
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