diff musixmatch-master/7digital-python/lib/oauth7digital.py @ 7:8c29444cb5fd

Just did some work
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Sat, 20 Apr 2013 19:01:57 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/musixmatch-master/7digital-python/lib/oauth7digital.py	Sat Apr 20 19:01:57 2013 +0200
@@ -0,0 +1,96 @@
+import httplib
+import oauth
+from lockerEndpoint import Locker
+    
+class Oauth7digital(object):
+    key = None
+
+    SERVER = 'api.7digital.com'
+    REQUEST_TOKEN_URL = 'https://%s/1.2/oauth/requesttoken' % SERVER
+    ACCESS_TOKEN_URL = 'https://%s/1.2/oauth/accesstoken' % SERVER
+    LOCKER_ENDPOINT_URL = 'http://%s/1.2/user/locker' %SERVER
+
+    def __init__(self, key, secret, access_token = None):
+        self.key = key
+        self.secret = secret
+        self.access_token = access_token
+
+    def request_token(self):
+        print '\nOAUTH STEP 1'
+        oauth_request = oauth.OAuthRequest.from_consumer_and_token(self.__consumer(), http_url = self.REQUEST_TOKEN_URL, parameters={})
+        print '\nMESSAGE:: %s' %oauth_request
+        oauth_request.sign_request(self.__signature_method(), self.__consumer(), None)
+        resp = self.__fetch_response(oauth_request, self.__secure_connection()) 
+
+        token = oauth.OAuthToken.from_string(resp)
+        return token
+
+    def authorize_request_token(self, token):
+        AUTHORIZATION_URL = 'https://account.7digital.com/%s/oauth/authorise' % self.key
+        print '\nOAUTH STEP 2'
+        auth_url="%s?oauth_token=%s" % (AUTHORIZATION_URL, token.key)
+
+        # auth url to go to
+        print 'Authorization URL:\n%s' % auth_url
+        oauth_verifier = raw_input('Please go to the above URL and authorize the app. Hit return when you have been authorized: ')
+        return True
+    
+    def request_access_token(self, token):
+        print '\nOAUTH STEP 3'
+        oauth_request = self.__sign_oauth_request(token, self.ACCESS_TOKEN_URL)
+        resp = self.__fetch_response(oauth_request, self.__secure_connection()) 
+
+        token = oauth.OAuthToken.from_string(resp)
+        return token
+    
+    def get_user_locker(self):
+        resp = self.__get_locker()
+        return Locker(resp).get_content()
+    
+    def get_artist_from_user_locker(self):
+        resp = self.__get_locker()
+        return Locker(resp).get_artists()
+    
+    def get_releases_from_user_locker(self):
+        resp = self.__get_locker()
+        return Locker(resp).get_releases()
+    
+    def get_tracks_from_user_locker(self):
+        resp = self.__get_locker()
+        return Locker(resp).get_tracks()
+    
+    def get_locker(self):
+        resp = self.__get_locker()
+        return Locker(resp).get_contents()
+    
+    def __get_locker(self):
+        oauth_request = self.__sign_oauth_request(self.access_token, self.LOCKER_ENDPOINT_URL)
+        resp = self.__fetch_response(oauth_request, self.__connection())
+        return resp
+    
+    def __sign_oauth_request(self, token, url_end_point):
+        oauth_request = oauth.OAuthRequest.from_consumer_and_token(self.__consumer(), token=token, http_url = url_end_point, parameters={})
+        
+        oauth_request.sign_request(self.__signature_method(), self.__consumer(), token)
+        return oauth_request
+      
+    def __consumer(self):
+        return oauth.OAuthConsumer(self.key, self.secret)
+    
+    def __signature_method(self):
+        return oauth.OAuthSignatureMethod_HMAC_SHA1()
+        
+    def __secure_connection(self):
+        return httplib.HTTPSConnection(self.SERVER)
+    
+    def __connection(self):
+        return httplib.HTTPConnection(self.SERVER)
+        
+    def __fetch_response(self, oauth_request, connection):
+	    url = oauth_request.to_url()
+	    connection.request(oauth_request.http_method, url)
+	    response = connection.getresponse()
+	    result = response.read()
+	
+	    return result
+