linkedin.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import urllib
  2. import urlparse
  3. import oauth2 as oauth
  4. import simplejson
  5. class LinkedInAPI(object):
  6. base_url = 'https://api.linkedin.com'
  7. li_url ='http://www.linkedin.com'
  8. api_profile_connections_url = base_url + '/v1/people/~/connections'
  9. api_profile_url = base_url + '/v1/people/~'
  10. access_token_path = base_url + '/uas/oauth/accessToken'
  11. authorize_path = base_url + '/uas/oauth/authorization'
  12. def __init__(self, ck, cs, ut, us):
  13. self.consumer_key = ck
  14. self.consumer_secret = cs
  15. self.user_token = ut
  16. self.user_secret = us
  17. self.consumer = oauth.Consumer(self.consumer_key, self.consumer_secret)
  18. def get_authorize_url(self):
  19. li_url ='http://www.linkedin.com'
  20. authorize_path = li_url +'/uas/oauth/authorization'
  21. auth_url = authorize_path+'?response_type=code'+self.consumer_key+'redirect_uri=https://127.0.0.1:8000/hackathon/linkedin'
  22. return auth_url
  23. def get_access_token(self, request_token, verifier):
  24. token = self.get_user_token(request_token)
  25. token.set_verifier(verifier)
  26. return dict(urlparse.parse_qsl(self.request(
  27. self.access_token_path, {}, 'POST', token=token)))
  28. def get_user_connections(self, access_token, selectors=None, query_args=None, headers=None):
  29. token = self.get_user_token(access_token)
  30. url = self.api_profile_connections_url
  31. if selectors:
  32. assert type(selectors) == type([]), (
  33. '"Keyword argument "selectors" must be of type "list"')
  34. url = self.prepare_field_selectors(selectors, url)
  35. return simplejson.loads(self.request(
  36. url, query_args, 'GET', headers=headers, token=token))
  37. def get_user_profile(self, access_token, selectors=None, headers=None, **query_args):
  38. token = self.get_user_token(access_token)
  39. url = self.api_profile_url
  40. if selectors:
  41. assert type(selectors) == type([]), (
  42. '"Keyword argument "selectors" must be of type "list"')
  43. url = self.prepare_field_selectors(selectors, url)
  44. return simplejson.loads(self.request(
  45. url, query_args, 'GET', token=token, headers=headers))