def submit_company_share(self, company_id, comment=None, title=None, description=None, submitted_url=None, submitted_image_url=None, visibility_code='anyone'): post = { 'visibility': { 'code': visibility_code, }, } if comment is not None: post['comment'] = comment if title is not None and submitted_url is not None: post['content'] = { 'title': title, 'submitted-url': submitted_url, 'description': description, } if submitted_image_url: post['content']['submitted-image-url'] = submitted_image_url url = '%s/%s/shares' % (ENDPOINTS.COMPANIES, company_id) response = self.make_request('POST', url, data=json.dumps(post)) raise_for_error(response) return response.json()
def send_message(self, message): assert type(message) == LinkedInMessage, 'LinkedInInvitation required' url = '%s/~/mailbox' % ENDPOINTS.PEOPLE response = self.make_request('POST', url, data=json.dumps(message.json)) raise_for_error(response) return True
def get_post_comments(self, post_id, selectors=None, params=None, headers=None): url = '%s/%s/comments' % (ENDPOINTS.POSTS, post_id) if selectors: url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_job_bookmarks(self, selectors=None, params=None, headers=None): url = '%s/~/job-bookmarks' % ENDPOINTS.PEOPLE if selectors: url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def search_job(self, selectors=None, params=None, headers=None): url = ENDPOINTS.JOB_SEARCH if selectors: url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_company_products(self, company_id, selectors=None, params=None, headers=None): url = '%s/%s/products' % (ENDPOINTS.COMPANIES, str(company_id)) if selectors: url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def search_profile(self, selectors=None, params=None, headers=None): if selectors: url = '%s:(%s)' % (ENDPOINTS.PEOPLE_SEARCH, LinkedInSelector.parse(selectors)) else: url = ENDPOINTS.PEOPLE_SEARCH response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_posts(self, group_id, post_ids=None, selectors=None, params=None, headers=None): url = '%s/%s/posts' % (ENDPOINTS.GROUPS, str(group_id)) if post_ids: url = '%s::(%s)' % (url, ','.join(map(str, post_ids))) if selectors: url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_access_token(self, timeout=60): assert self.authorization_code, 'You must first get the authorization code' qd = {'grant_type': 'authorization_code', 'code': self.authorization_code, 'redirect_uri': self.redirect_uri, 'client_id': self.key, 'client_secret': self.secret} response = requests.post(self.ACCESS_TOKEN_URL, data=qd, timeout=timeout) raise_for_error(response) response = response.json() self.token = AccessToken(response['access_token'], response['expires_in']) return self.token
def get_picture_urls(self, member_id=None, member_url=None, params=None, headers=None): if 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, quote_plus(member_url)) else: url = '%s/~/picture-urls::(original)' % ENDPOINTS.PEOPLE response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_connections(self, member_id=None, member_url=None, selectors=None, params=None, headers=None): if member_id: url = '%s/id=%s/connections' % (ENDPOINTS.PEOPLE, str(member_id)) elif member_url: url = '%s/url=%s/connections' % (ENDPOINTS.PEOPLE, quote_plus(member_url)) else: url = '%s/~/connections' % ENDPOINTS.PEOPLE if selectors: url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_network_update(self, types, update_key, self_scope=True, params=None, headers=None): url = '%s/~/network/updates/key=%s' % (ENDPOINTS.PEOPLE, str(update_key)) if not params: params = {} if types: params.update({'type': types}) if self_scope is True: params.update({'scope': 'self'}) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def submit_group_post(self, group_id, title, summary, submitted_url, submitted_image_url, content_title, description): post = { 'title': title, 'summary': summary, 'content': { 'submitted-url': submitted_url, 'title': content_title, 'description': description } } if submitted_image_url: post['content']['submitted-image-url'] = submitted_image_url url = '%s/%s/posts' % (ENDPOINTS.GROUPS, str(group_id)) response = self.make_request('POST', url, data=json.dumps(post)) raise_for_error(response) return True
def get_companies(self, company_ids=None, universal_names=None, selectors=None, params=None, headers=None): identifiers = [] url = ENDPOINTS.COMPANIES if company_ids: identifiers += map(str, company_ids) if universal_names: identifiers += ['universal-name=%s' % un for un in universal_names] if identifiers: url = '%s::(%s)' % (url, ','.join(identifiers)) if selectors: url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_profile(self, member_id=None, member_url=None, selectors=None, params=None, headers=None): if member_id: if type(member_id) is list: # Batch request, ids as CSV. url = '%s::(%s)' % (ENDPOINTS.PEOPLE, ','.join(member_id)) else: url = '%s/id=%s' % (ENDPOINTS.PEOPLE, str(member_id)) elif member_url: url = '%s/url=%s' % (ENDPOINTS.PEOPLE, quote_plus(member_url)) else: url = '%s/~' % ENDPOINTS.PEOPLE if selectors: url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
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)) else: url = '%s/~/network/updates' % ENDPOINTS.PEOPLE if not params: params = {} if types: params.update({'type': types}) if self_scope is True: params.update({'scope': 'self'}) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_network_status(self, params=None, headers=None): url = '%s/~/network/network-stats' % ENDPOINTS.PEOPLE response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_job(self, job_id, selectors=None, params=None, headers=None): url = '%s/%s' % (ENDPOINTS.JOBS, str(job_id)) url = '%s:(%s)' % (url, LinkedInSelector.parse(selectors)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def get_group(self, group_id, selectors=None, params=None, headers=None): url = '%s/%s' % (ENDPOINTS.GROUPS, str(group_id)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def unfollow_company(self, company_id): url = '%s/~/following/companies/id=%s' % (ENDPOINTS.PEOPLE, str(company_id)) response = self.make_request('DELETE', url) raise_for_error(response) return True
def follow_company(self, company_id): url = '%s/~/following/companies' % ENDPOINTS.PEOPLE post = {'id': company_id} response = self.make_request('POST', url, data=json.dumps(post)) raise_for_error(response) return True
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'}})) raise_for_error(response) return True
def comment_on_update(self, update_key, comment): comment = {'comment': comment} url = '%s/~/network/updates/key=%s/update-comments' % (ENDPOINTS.PEOPLE, update_key) response = self.make_request('POST', url, data=json.dumps(comment)) raise_for_error(response) return True
def get_company_by_email_domain(self, email_domain, params=None, headers=None): url = '%s?email-domain=%s' % (ENDPOINTS.COMPANIES, email_domain) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()
def leave_group(self, group_id): url = '%s/~/group-memberships/%s' % (ENDPOINTS.PEOPLE, str(group_id)) response = self.make_request('DELETE', url) raise_for_error(response) return True
def like_update(self, update_key, is_liked=True): url = '%s/~/network/updates/key=%s/is-liked' % (ENDPOINTS.PEOPLE, update_key) response = self.make_request('PUT', url, data=json.dumps(is_liked)) raise_for_error(response) return True
def get_company_updates(self, company_id, params=None, headers=None): url = '%s/%s/updates' % (ENDPOINTS.COMPANIES, str(company_id)) response = self.make_request('GET', url, params=params, headers=headers) raise_for_error(response) return response.json()