ability to ping DelBar API

This commit is contained in:
2025-02-26 10:22:58 +01:00
parent 6d650d718c
commit 7affec30ae
8 changed files with 128 additions and 1 deletions

View File

View File

@@ -0,0 +1,38 @@
import re
from typing import Final
import requests
from requests import Response
from delta_barth.errors import UnspecifiedRequestType
from delta_barth.types import HttpRequestTypes
def _strip_url_components(string: str) -> str:
return re.sub(r"^[ /]+|[ /]+$", "", string)
def combine_route(base_url: str, route: str) -> str:
base_url = _strip_url_components(base_url)
route = _strip_url_components(route)
return "/".join((base_url, route))
def ping(
base_url: str,
method: HttpRequestTypes,
) -> Response:
ROUTE: Final[str] = "ping"
URL: Final = combine_route(base_url, ROUTE)
resp: Response
if method == HttpRequestTypes.GET:
resp = requests.get(URL)
elif method == HttpRequestTypes.PUT:
resp = requests.put(URL)
elif method == HttpRequestTypes.DELETE:
resp = requests.delete(URL)
else:
raise UnspecifiedRequestType(f"Request type {method} not defined for endpoint")
return resp

View File

@@ -0,0 +1,2 @@
class UnspecifiedRequestType(Exception):
"""exception raised if for a given API endpoint a not defined operation is requested"""

View File

@@ -5,6 +5,14 @@ from typing import TypeAlias
import pandas as pd
# ** API
class HttpRequestTypes(enum.StrEnum):
GET = enum.auto()
POST = enum.auto()
PUT = enum.auto()
DELETE = enum.auto()
# ** forecasts
@dataclass(slots=True)
class CustomerDataSalesForecast: