Esempio n. 1
0
    def get_authorize_login_url(self, scope=None):
        http_object = Http()

        url = self._url_for_authorize(scope=scope)
        response, content = http_object.request(url)
        if response["status"] != "200":
            raise OAuth2AuthExchangeError("The server returned a non-200 response for URL %s" % url)
        redirected_to = response["content-location"]
        return redirected_to
Esempio n. 2
0
 def exchange_for_access_token(self, code=None, username=None, password=None, scope=None, user_id=None):
     data = self._data_for_exchange(code, username, password, scope=scope, user_id=user_id)
     http_object = Http()
     url = self.api.access_token_url
     response, content = http_object.request(url, method="POST", body=data)
     parsed_content = simplejson.loads(content)
     if int(response["status"]) != 200:
         raise OAuth2AuthExchangeError(parsed_content.get("message", ""))
     return parsed_content["access_token"]
Esempio n. 3
0
class api:
    """
    Interface to the bit.ly API; incomplete, containing only what is needed
    by the socialfeeder application.
    """
    shorten_url = "https://api-ssl.bitly.com/v3/shorten"
    base_url = "https://api-ssl.bitly.com/"

    def __init__(self, login, access_token, api_key):
        """
        @param login: bit.ly username
        @param access_token: bit.ly user access token
        @param api_key: bit.ly user API key
        """
        from lib.httplib2 import Http
        self.login = login
        self.access_token = access_token
        self.api_key = api_key
        self.connector = Http()

    def shorten(self, url):
        """
        Shortens an URL with the given bit.ly account
        
        @param url: URL to shorten
        @return: shortened URL, or full URL on failure
        """
        from urllib import urlencode
        data = {
                "format":"json",
                "longUrl":url,
                "login":self.login,
                "apiKey":self.api_key
                }
        resp, content = self.connector.request(self.shorten_url + "?" + urlencode(data), "GET")
        if resp['status'] == '200':
            from django.utils import simplejson as json
            info = json.loads(content)
            if str(info['status_code']) == "200":
                if info.has_key('data'):
                    return info['data']['url']
                else:
                    return info['url']
            else:
                logging.error("Bit.ly failed for some reason" + str(info))
        logging.error("Bit.ly error detected " + str(resp))
        return url
Esempio n. 4
0
 def make_request(self, url, method="GET", body=None, headers={}):
     if not "User-Agent" in headers:
         headers.update({"User-Agent": "%s Python Client" % self.api.api_name})
     http_obj = Http()
     return http_obj.request(url, method, body=body, headers=headers)