Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
PEP8
  • Loading branch information
SamuelMarks committed Dec 12, 2014
commit 843b23b5cdca132b518d9ade3bb03ed99ef48f30
23 changes: 16 additions & 7 deletions linkedin/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,44 @@
class LinkedInError(Exception):
pass


class LinkedInBadRequestError(LinkedInError):
pass


class LinkedInUnauthorizedError(LinkedInError):
pass


class LinkedInPaymentRequiredError(LinkedInError):
pass


class LinkedInNotFoundError(LinkedInError):
pass


class LinkedInConflictError(LinkedInError):
pass


class LinkedInForbiddenError(LinkedInError):
pass


class LinkedInInternalServiceError(LinkedInError):
pass


ERROR_CODE_EXCEPTION_MAPPING = {
400: LinkedInBadRequestError,
401: LinkedInUnauthorizedError,
402: LinkedInPaymentRequiredError,
403: LinkedInForbiddenError,
404: LinkedInNotFoundError,
409: LinkedInForbiddenError,
500: LinkedInInternalServiceError}
400: LinkedInBadRequestError,
401: LinkedInUnauthorizedError,
402: LinkedInPaymentRequiredError,
403: LinkedInForbiddenError,
404: LinkedInNotFoundError,
409: LinkedInForbiddenError,
500: LinkedInInternalServiceError}


def get_exception_for_error_code(error_code):
return ERROR_CODE_EXCEPTION_MAPPING.get(error_code, LinkedInError)
67 changes: 33 additions & 34 deletions linkedin/linkedin.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,39 +15,37 @@
__all__ = ['LinkedInAuthentication', 'LinkedInApplication', 'PERMISSIONS']

PERMISSIONS = enum('Permission',
COMPANY_ADMIN='rw_company_admin',
BASIC_PROFILE='r_basicprofile',
FULL_PROFILE='r_fullprofile',
EMAIL_ADDRESS='r_emailaddress',
NETWORK='r_network',
CONTACT_INFO='r_contactinfo',
NETWORK_UPDATES='rw_nus',
GROUPS='rw_groups',
MESSAGES='w_messages')

COMPANY_ADMIN='rw_company_admin',
BASIC_PROFILE='r_basicprofile',
FULL_PROFILE='r_fullprofile',
EMAIL_ADDRESS='r_emailaddress',
NETWORK='r_network',
CONTACT_INFO='r_contactinfo',
NETWORK_UPDATES='rw_nus',
GROUPS='rw_groups',
MESSAGES='w_messages')

ENDPOINTS = enum('LinkedInURL',
PEOPLE='https://api.linkedin.com/v1/people',
PEOPLE_SEARCH='https://api.linkedin.com/v1/people-search',
GROUPS='https://api.linkedin.com/v1/groups',
POSTS='https://api.linkedin.com/v1/posts',
COMPANIES='https://api.linkedin.com/v1/companies',
COMPANY_SEARCH='https://api.linkedin.com/v1/company-search',
JOBS='https://api.linkedin.com/v1/jobs',
JOB_SEARCH='https://api.linkedin.com/v1/job-search')

PEOPLE='https://api.linkedin.com/v1/people',
PEOPLE_SEARCH='https://api.linkedin.com/v1/people-search',
GROUPS='https://api.linkedin.com/v1/groups',
POSTS='https://api.linkedin.com/v1/posts',
COMPANIES='https://api.linkedin.com/v1/companies',
COMPANY_SEARCH='https://api.linkedin.com/v1/company-search',
JOBS='https://api.linkedin.com/v1/jobs',
JOB_SEARCH='https://api.linkedin.com/v1/job-search')

NETWORK_UPDATES = enum('NetworkUpdate',
APPLICATION='APPS',
COMPANY='CMPY',
CONNECTION='CONN',
JOB='JOBS',
GROUP='JGRP',
PICTURE='PICT',
EXTENDED_PROFILE='PRFX',
CHANGED_PROFILE='PRFU',
SHARED='SHAR',
VIRAL='VIRL')
APPLICATION='APPS',
COMPANY='CMPY',
CONNECTION='CONN',
JOB='JOBS',
GROUP='JGRP',
PICTURE='PICT',
EXTENDED_PROFILE='PRFX',
CHANGED_PROFILE='PRFU',
SHARED='SHAR',
VIRAL='VIRL')


class LinkedInDeveloperAuthentication(object):
Expand All @@ -57,6 +55,7 @@ class LinkedInDeveloperAuthentication(object):
Useful for situations in which users would like to access their own data or
during the development process.
"""

def __init__(self, consumer_key, consumer_secret, user_token, user_secret,
redirect_uri, permissions=[]):
self.consumer_key = consumer_key
Expand Down Expand Up @@ -197,9 +196,9 @@ def search_profile(self, selectors=None, params=None, headers=None):
return response.json()

def get_picture_urls(self, member_id=None, member_url=None,
params=None, headers=None):
params=None, headers=None):
if member_id:
url = '%s/id=%s/picture-urls::(original)' % (ENDPOINTS.PEOPLE, str(member_id))
url = '%s/id=%s/picture-urls::(original)' % (ENDPOINTS.PEOPLE, str(member_id))
elif member_url:
url = '%s/url=%s/picture-urls::(original)' % (ENDPOINTS.PEOPLE,
urllib.quote_plus(member_url))
Expand Down Expand Up @@ -268,7 +267,7 @@ def get_posts(self, group_id, post_ids=None, selectors=None, params=None,
def join_group(self, group_id):
url = '%s/~/group-memberships/%s' % (ENDPOINTS.PEOPLE, str(group_id))
response = self.make_request('PUT', url,
data=json.dumps({'membershipState': {'code': 'member'}}))
data=json.dumps({'membershipState': {'code': 'member'}}))
raise_for_error(response)
return True

Expand Down Expand Up @@ -431,7 +430,7 @@ def get_network_updates(self, types, member_id=None,
self_scope=True, params=None, headers=None):
if member_id:
url = '%s/id=%s/network/updates' % (ENDPOINTS.PEOPLE,
str(member_id))
str(member_id))
else:
url = '%s/~/network/updates' % ENDPOINTS.PEOPLE

Expand All @@ -449,7 +448,7 @@ def get_network_updates(self, types, member_id=None,
return response.json()

def get_network_update(self, types, update_key,
self_scope=True, params=None, headers=None):
self_scope=True, params=None, headers=None):
url = '%s/~/network/updates/key=%s' % (ENDPOINTS.PEOPLE, str(update_key))

if not params:
Expand Down
1 change: 1 addition & 0 deletions linkedin/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,5 +68,6 @@ def raise_for_error(response):
except (ValueError, TypeError):
raise LinkedInError(error.message)


HTTP_METHODS = enum('HTTPMethod', GET='GET', POST='POST',
PUT='PUT', DELETE='DELETE', PATCH='PATCH')
1 change: 0 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme:
long_description = readme.read()


setup(name='python-linkedin',
version=__version__,
description='Python Interface to the LinkedIn API',
Expand Down