From 5a85c2eb006d4c959ef36bb8ed1e5b3e32b9dc6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Kub=C3=AD=C4=8Dek?= Date: Sat, 25 Jan 2025 19:17:15 +0100 Subject: [PATCH] superfaktura_api: allow get request response body in pdf, not only in json --- superfaktura/superfaktura_api.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/superfaktura/superfaktura_api.py b/superfaktura/superfaktura_api.py index 9070e42..f979307 100644 --- a/superfaktura/superfaktura_api.py +++ b/superfaktura/superfaktura_api.py @@ -32,11 +32,14 @@ from typing import Dict import requests from dotenv import load_dotenv # type: ignore +from superfaktura.enumerations.data_format import DataFormat + class SuperFakturaAPIException(Exception): """Exception for errors when working with the SuperFaktura API.""" + class SuperFakturaAPIMissingCredentialsException(Exception): """Exception for missing login credentials.""" @@ -62,7 +65,7 @@ class SuperFakturaAPI: f"{_api_company_id}" } - def get(self, endpoint: str, timeout: int = 5) -> Dict: + def get(self, endpoint: str, data_format: DataFormat = DataFormat.JSON, timeout: int = 5) -> Dict: """ Retrieves data from the SuperFaktura API. @@ -90,10 +93,14 @@ class SuperFakturaAPI: url = f"{self._api_url}/{endpoint}" req = requests.get(url=url, headers=self._auth_header, timeout=timeout) if req.status_code == 200: - return req.json() - raise SuperFakturaAPIException( - f"Get status code: {req.status_code}; {req.json()}" - ) + if data_format == DataFormat.JSON: + return req.json() + elif data_format == DataFormat.PDF: + return {"pdf": req.content} # returns a dict with the PDF content + else: + raise SuperFakturaAPIException( + f"Get status code: {req.status_code}; {req.json()}" + ) def post(self, endpoint: str, data: str, timeout: int = 5) -> Dict: """ @@ -130,6 +137,7 @@ class SuperFakturaAPI: ) if req.status_code == 200: return req.json() - raise SuperFakturaAPIException( - f"Post status code: {req.status_code}; {req.json()}" - ) + else: + raise SuperFakturaAPIException( + f"Post status code: {req.status_code}; {req.json()}" + )