Skip to content
Open
Changes from all commits
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
36 changes: 30 additions & 6 deletions open_linkedin_api/linkedin.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from urllib.parse import urlencode, quote
from typing import Dict, Union, Optional, List, Literal

from open_linkedin_api.client import Client
from open_linkedin_api.client import Client, UnauthorizedException
from open_linkedin_api.utils.helpers import (
get_id_from_urn,
get_urn_from_raw_update,
Expand Down Expand Up @@ -86,7 +86,19 @@ def _fetch(self, uri: str, evade=default_evade, base_request=False, **kwargs):
evade()

url = f"{self.client.API_BASE_URL if not base_request else self.client.LINKEDIN_BASE_URL}{uri}"
return self.client.session.get(url, **kwargs)
res = self.client.session.get(url, **kwargs)

if res.status_code == 401:
raise UnauthorizedException()

if not (
200 <= res.status_code < 300
): # I don't know all status_codes successfully of LkIn
raise Exception(
f"Request failed with status code {res.status_code}: {res.text}"
)

return res

def _cookies(self):
"""Return client cookies"""
Expand All @@ -101,7 +113,19 @@ def _post(self, uri: str, evade=default_evade, base_request=False, **kwargs):
evade()

url = f"{self.client.API_BASE_URL if not base_request else self.client.LINKEDIN_BASE_URL}{uri}"
return self.client.session.post(url, **kwargs)

res = self.client.session.post(url, **kwargs)
if res.status_code == 401:
raise UnauthorizedException()

if not (
200 <= res.status_code < 300
): # I don't know all status_codes successfully of LkIn
raise Exception(
f"Request failed with status code {res.status_code}: {res.text}"
)

return res

def get_profile_posts(
self,
Expand Down Expand Up @@ -140,7 +164,7 @@ def get_profile_posts(
res = self._fetch(url, params=url_params)
data = res.json()
if data and "status" in data and data["status"] != 200:
self.logger.info("request failed: {}".format(data["message"]))
self.logger.info(f"request failed:{data.get('status')} - {data.get('message')}")
return [{}]
while data and data["metadata"]["paginationToken"] != "":
if len(data["elements"]) >= post_count:
Expand Down Expand Up @@ -744,7 +768,7 @@ def get_profile(

data = res.json()
if data and "status" in data and data["status"] != 200:
self.logger.info("request failed: {}".format(data["message"]))
self.logger.info(f"request failed:{data.get('status')} - {data.get('message')}")
return {}

# massage [profile] data
Expand Down Expand Up @@ -1688,7 +1712,7 @@ def get_job(self, job_id: str) -> Dict:
data = res.json()

if data and "status" in data and data["status"] != 200:
self.logger.info("request failed: {}".format(data["message"]))
self.logger.info(f"request failed:{data.get('status')} - {data.get('message')}")
return {}

return data
Expand Down