fixed mistaken bug
parent
d6d41ded20
commit
87b4dcd05a
39
jakdojade.py
39
jakdojade.py
|
@ -52,25 +52,31 @@ class Authorization():
|
||||||
params = [
|
params = [
|
||||||
(param, self.params[param])
|
(param, self.params[param])
|
||||||
if param in self.params else
|
if param in self.params else
|
||||||
(param, getattr(self, 'get_{}'.format(param))())
|
(param, getattr(self, 'gen_{}'.format(param))())
|
||||||
for param in required_params
|
for param in required_params
|
||||||
]
|
]
|
||||||
return params
|
return params
|
||||||
|
|
||||||
def get_oauth_timestamp(self):
|
|
||||||
return str(int(time.time()))
|
|
||||||
|
|
||||||
def get_oauth_nonce(self):
|
def get_auth_params(self, url, params, method='GET'):
|
||||||
return str(int(random.getrandbits(64)))
|
auth_params = self.get_params()
|
||||||
|
params = sorted(params + auth_params)
|
||||||
|
signature = self.get_signature(url, params, method)
|
||||||
|
auth_params += [('oauth_signature', signature.decode('utf-8'))]
|
||||||
|
return auth_params
|
||||||
|
|
||||||
|
def authorization_header(self, auth_params):
|
||||||
|
""" Authorization: Oauth oauth_foo="bar", auth_baz="..."""
|
||||||
|
t = '{k}="{v}"'
|
||||||
|
q = partial(urllib.parse.quote, safe='')
|
||||||
|
return 'OAuth ' + ', '.join(t.format(k=k, v=q(v)) for (k, v) in auth_params)
|
||||||
|
|
||||||
def request(self, params=None):
|
|
||||||
if not params: params = []
|
|
||||||
return params + self.get_params()
|
|
||||||
|
|
||||||
def set_key(self, key):
|
def set_key(self, key):
|
||||||
self.key = key
|
self.key = key
|
||||||
|
|
||||||
def get_signature(self, url, params, method):
|
def get_signature(self, url, params, method):
|
||||||
|
params = sorted(params)
|
||||||
url = urllib.parse.quote(url, safe='')
|
url = urllib.parse.quote(url, safe='')
|
||||||
q = urllib.parse.quote
|
q = urllib.parse.quote
|
||||||
params = [(k, q(v)) for (k, v) in params]
|
params = [(k, q(v)) for (k, v) in params]
|
||||||
|
@ -81,6 +87,9 @@ class Authorization():
|
||||||
hmac(self.key, message, sha1).digest()
|
hmac(self.key, message, sha1).digest()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def gen_oauth_timestamp(self): return str(int(time.time()))
|
||||||
|
def gen_oauth_nonce(self): return str(int(random.getrandbits(64)))
|
||||||
|
|
||||||
|
|
||||||
class RequestMachine():
|
class RequestMachine():
|
||||||
user_agent = 'android'
|
user_agent = 'android'
|
||||||
|
@ -113,25 +122,15 @@ class RequestMachine():
|
||||||
default_params = [(k, v) for (k, v) in self.defaults.items()]
|
default_params = [(k, v) for (k, v) in self.defaults.items()]
|
||||||
request_params = [(k, v) for (k, v) in params.items()]
|
request_params = [(k, v) for (k, v) in params.items()]
|
||||||
params = default_params + request_params
|
params = default_params + request_params
|
||||||
auth_params = self.get_auth_params(url, params)
|
auth_params = self.auth.get_auth_params(url, params)
|
||||||
return(self._request(url, params, auth_params))
|
return(self._request(url, params, auth_params))
|
||||||
|
|
||||||
def authorization_header(self, auth_params):
|
|
||||||
t = '{k}="{v}"'
|
|
||||||
q = partial(urllib.parse.quote, safe='')
|
|
||||||
return 'OAuth ' + ', '.join(t.format(k=k, v=q(v)) for (k, v) in auth_params)
|
|
||||||
|
|
||||||
def get_auth_params(self, url, params, method='GET'):
|
|
||||||
auth_params = auth.get_params()
|
|
||||||
params = sorted(params + auth_params)
|
|
||||||
key = self.auth.get_signature(url, params, method)
|
|
||||||
auth_params += [('oauth_signature', key.decode('utf-8'))]
|
|
||||||
return auth_params
|
|
||||||
|
|
||||||
def _request(self, url, params, auth_params):
|
def _request(self, url, params, auth_params):
|
||||||
headers = {}
|
headers = {}
|
||||||
payload = {k: v for (k, v) in params}
|
payload = {k: v for (k, v) in params}
|
||||||
auth_header = self.authorization_header(auth_params)
|
auth_header = self.auth.authorization_header(auth_params)
|
||||||
headers["Authorization"] = auth_header
|
headers["Authorization"] = auth_header
|
||||||
headers['User-Agent'] = self.user_agent
|
headers['User-Agent'] = self.user_agent
|
||||||
headers['Connection'] = 'Keep-Alive'
|
headers['Connection'] = 'Keep-Alive'
|
||||||
|
|
Loading…
Reference in New Issue