* fixed: session key generation broken (issue #14)
This commit is contained in:
parent
c61b15b129
commit
0854653089
15
pylast.py
15
pylast.py
|
@ -122,16 +122,16 @@ class _Request(object):
|
||||||
HOST_NAME = 'ws.audioscrobbler.com'
|
HOST_NAME = 'ws.audioscrobbler.com'
|
||||||
HOST_SUBDIR = '/2.0/'
|
HOST_SUBDIR = '/2.0/'
|
||||||
|
|
||||||
def __init__(self, method_name, params, api_key, api_secret = None, session_key = None):
|
def __init__(self, method_name, params, api_key, api_secret, session_key = None):
|
||||||
|
|
||||||
self.params = params
|
self.params = params
|
||||||
self.api_secret = api_secret
|
self.api_secret = api_secret
|
||||||
|
|
||||||
self.params["api_key"] = api_key
|
self.params["api_key"] = api_key
|
||||||
self.params["method"] = method_name
|
self.params["method"] = method_name
|
||||||
self.params["sk"] = session_key
|
|
||||||
|
|
||||||
if session_key:
|
if session_key:
|
||||||
|
self.params["sk"] = session_key
|
||||||
self.sign_it()
|
self.sign_it()
|
||||||
|
|
||||||
def sign_it(self):
|
def sign_it(self):
|
||||||
|
@ -265,6 +265,9 @@ class SessionKeyGenerator(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
request = _Request('auth.getToken', dict(), self.api_key, self.api_secret)
|
request = _Request('auth.getToken', dict(), self.api_key, self.api_secret)
|
||||||
|
|
||||||
|
# default action is that a request is signed only when
|
||||||
|
# a session key is provided.
|
||||||
request.sign_it()
|
request.sign_it()
|
||||||
|
|
||||||
doc = request.execute()
|
doc = request.execute()
|
||||||
|
@ -293,6 +296,9 @@ class SessionKeyGenerator(object):
|
||||||
token = "" #that's gonna raise a ServiceException of an unauthorized token when the request is executed.
|
token = "" #that's gonna raise a ServiceException of an unauthorized token when the request is executed.
|
||||||
|
|
||||||
request = _Request('auth.getSession', {'token': token}, self.api_key, self.api_secret)
|
request = _Request('auth.getSession', {'token': token}, self.api_key, self.api_secret)
|
||||||
|
|
||||||
|
# default action is that a request is signed only when
|
||||||
|
# a session key is provided.
|
||||||
request.sign_it()
|
request.sign_it()
|
||||||
|
|
||||||
doc = request.execute()
|
doc = request.execute()
|
||||||
|
@ -304,11 +310,14 @@ class SessionKeyGenerator(object):
|
||||||
|
|
||||||
params = {"username": username, "authToken": md5(username + md5_password)}
|
params = {"username": username, "authToken": md5(username + md5_password)}
|
||||||
request = _Request("auth.getMobileSession", params, self.api_key, self.api_secret)
|
request = _Request("auth.getMobileSession", params, self.api_key, self.api_secret)
|
||||||
|
|
||||||
|
# default action is that a request is signed only when
|
||||||
|
# a session key is provided.
|
||||||
request.sign_it()
|
request.sign_it()
|
||||||
|
|
||||||
doc = request.execute()
|
doc = request.execute()
|
||||||
|
|
||||||
return doc.getElementsByTagName('key')[0].firstChild.data
|
return _extract(doc, "key")
|
||||||
|
|
||||||
class _BaseObject(object):
|
class _BaseObject(object):
|
||||||
"""An abstract webservices object."""
|
"""An abstract webservices object."""
|
||||||
|
|
Loading…
Reference in a new issue