From 0d512c18d625256e66cf497c5d904343fa89d49f Mon Sep 17 00:00:00 2001 From: esteban Date: Sat, 1 Nov 2025 07:21:02 -0300 Subject: [PATCH 1/3] raise error on unexpected status_code --- open_linkedin_api/linkedin.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/open_linkedin_api/linkedin.py b/open_linkedin_api/linkedin.py index 7d63e15..d16eac8 100644 --- a/open_linkedin_api/linkedin.py +++ b/open_linkedin_api/linkedin.py @@ -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, @@ -86,7 +86,15 @@ 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""" @@ -101,7 +109,15 @@ 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, From 8d9b5375a01755465da3f8bfd787c201b977881c Mon Sep 17 00:00:00 2001 From: esteban Date: Sat, 1 Nov 2025 07:31:44 -0300 Subject: [PATCH 2/3] black formatting --- open_linkedin_api/linkedin.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/open_linkedin_api/linkedin.py b/open_linkedin_api/linkedin.py index d16eac8..81dcc16 100644 --- a/open_linkedin_api/linkedin.py +++ b/open_linkedin_api/linkedin.py @@ -86,13 +86,17 @@ 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}" - res = 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}") + 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 @@ -114,8 +118,12 @@ def _post(self, uri: str, evade=default_evade, base_request=False, **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}") + 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 From a4f1572addbd4a727ab22833841fb77acffed9a6 Mon Sep 17 00:00:00 2001 From: esteban Date: Sun, 16 Nov 2025 09:25:32 -0300 Subject: [PATCH 3/3] 404 code don't have message --- open_linkedin_api/linkedin.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/open_linkedin_api/linkedin.py b/open_linkedin_api/linkedin.py index 81dcc16..2aa71b9 100644 --- a/open_linkedin_api/linkedin.py +++ b/open_linkedin_api/linkedin.py @@ -164,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: @@ -768,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 @@ -1712,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