Features: 1) Add is_status_code_success utility function to check HTTP status success codes; 2) Implement is_status_code_success in AMO access token retrieval to improve error handling;
Fixes: None; Extra: 1) Adjust minor formatting in `core/utils/__init__.py`; 2) Add logging for failed AMO access token requests;
This commit is contained in:
parent
eb69fd3328
commit
f2456d1391
2 changed files with 8 additions and 1 deletions
|
|
@ -8,6 +8,7 @@ from django.db import transaction
|
|||
|
||||
from core.crm.exceptions import CRMException
|
||||
from core.models import CustomerRelationshipManagementProvider, Order, OrderCrmLink
|
||||
from core.utils import is_status_code_success
|
||||
|
||||
logger = logging.getLogger("django")
|
||||
|
||||
|
|
@ -59,7 +60,9 @@ class AmoCRM:
|
|||
payload["grant_type"] = "authorization_code"
|
||||
payload["code"] = self.authorization_code
|
||||
r = requests.post(f"{self.base}/oauth2/access_token", json=payload, timeout=15)
|
||||
r.raise_for_status()
|
||||
if not is_status_code_success(r.status_code):
|
||||
logger.error(f"Unable to get AMO access token: {r.status_code} {r.text}")
|
||||
raise CRMException("Unable to get AMO access token")
|
||||
data = r.json()
|
||||
self.access_token = data["access_token"]
|
||||
cache.set("amo_refresh_token", data["refresh_token"], 604800)
|
||||
|
|
|
|||
|
|
@ -255,3 +255,7 @@ def generate_human_readable_token() -> str:
|
|||
str: A 20-character random token.
|
||||
"""
|
||||
return "".join([secrets.choice(CROCKFORD) for _ in range(20)])
|
||||
|
||||
|
||||
def is_status_code_success(status_code: int) -> bool:
|
||||
return 200 <= status_code < 300
|
||||
|
|
|
|||
Loading…
Reference in a new issue