Skip to content

Commit

Permalink
apis.pole_emploi: improve logging & store response in exception
Browse files Browse the repository at this point in the history
to ease debugging
  • Loading branch information
xavfernandez committed Jan 27, 2025
1 parent 75b9843 commit 2ea2357
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions itou/utils/apis/pole_emploi.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import json
import logging
import re

Expand All @@ -15,8 +16,9 @@
class PoleEmploiAPIException(Exception):
"""unexpected exceptions (meaning, "exceptional") that warrant a subsequent retry."""

def __init__(self, error_code):
def __init__(self, error_code, response_content=None):
self.error_code = error_code
self.response_content = response_content
super().__init__()

def __str__(self):
Expand Down Expand Up @@ -131,9 +133,18 @@ def _request(self, url, data=None, params=None, method="POST"):
if response.status_code == 204:
return None
if response.status_code == 429:
logger.warning("Request on url=%s triggered rate limit", url)
raise PoleEmploiRateLimitException(429)
if response.status_code not in (200, 206):
raise PoleEmploiAPIException(response.status_code)
logger.warning("Request on url=%s returned status_code=%s", url, response.status_code)
try:
content = response.json()
# This might look like:
# {'codeErreur': 'JCS0011G', 'codeHttp': 500,
# 'message': 'La vue service retournée par le connecteur HTTP est nulle ou mal formée'}
except json.decoder.JSONDecodeError:
content = response.content
raise PoleEmploiAPIException(response.status_code, response_content=content)
data = response.json()
return data
except httpx.RequestError as exc:
Expand Down

0 comments on commit 2ea2357

Please sign in to comment.