Skip to content

Commit 65fbfc2

Browse files
author
Jens Kürten
committed
refactor service module
1 parent 6b7928b commit 65fbfc2

File tree

5 files changed

+66
-49
lines changed

5 files changed

+66
-49
lines changed

csfunctions/service/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from csfunctions.service.numgen import NumberGeneratorService
2+
3+
4+
class Service:
5+
"""
6+
Provides access to services on the elements instance, e.g. generating numbers.
7+
"""
8+
9+
def __init__(self, service_url: str | None, service_token: str | None):
10+
self.generator = NumberGeneratorService(service_url, service_token)

csfunctions/service/base.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from typing import Optional
2+
3+
import requests
4+
5+
6+
class Unauthorized(Exception):
7+
pass
8+
9+
10+
class BaseService:
11+
"""
12+
Base class for services.
13+
"""
14+
15+
def __init__(self, service_url: str | None, service_token: str | None):
16+
self.service_url = service_url
17+
self.service_token = service_token
18+
19+
def request(self, endpoint: str, method: str = "GET", params: Optional[dict] = None) -> dict | list:
20+
"""
21+
Make a request to the access service.
22+
"""
23+
if self.service_url is None:
24+
raise ValueError("No service url given.")
25+
if self.service_token is None:
26+
raise ValueError("No service token given.")
27+
28+
headers = {"Authorization": f"Bearer {self.service_token}"}
29+
params = params or {}
30+
url = self.service_url.rstrip("/") + "/" + endpoint.lstrip("/")
31+
response = requests.request(method, url=url, params=params, headers=headers, timeout=10)
32+
33+
if response.status_code == 401:
34+
raise Unauthorized
35+
if response.status_code == 200:
36+
return response.json()
37+
else:
38+
raise ValueError(f"Access service responded with status code {response.status_code}.")
Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,4 @@
1-
from typing import Optional
2-
3-
import requests
4-
5-
6-
class Service:
7-
"""
8-
Provides access to services on the elements instance, e.g. generating numbers.
9-
"""
10-
11-
def __init__(self, service_url: str | None, service_token: str | None):
12-
self.generator = NumberGeneratorService(service_url, service_token)
13-
14-
15-
class Unauthorized(Exception):
16-
pass
17-
18-
19-
class BaseService:
20-
"""
21-
Base class for services.
22-
"""
23-
24-
def __init__(self, service_url: str | None, service_token: str | None):
25-
self.service_url = service_url
26-
self.service_token = service_token
27-
28-
def request(self, endpoint: str, method: str = "GET", params: Optional[dict] = None) -> dict | list:
29-
"""
30-
Make a request to the access service.
31-
"""
32-
if self.service_url is None:
33-
raise ValueError("No service url given.")
34-
if self.service_token is None:
35-
raise ValueError("No service token given.")
36-
37-
headers = {"Authorization": f"Bearer {self.service_token}"}
38-
params = params or {}
39-
url = self.service_url.rstrip("/") + "/" + endpoint.lstrip("/")
40-
response = requests.request(method, url=url, params=params, headers=headers, timeout=10)
41-
42-
if response.status_code == 401:
43-
raise Unauthorized
44-
if response.status_code == 200:
45-
return response.json()
46-
else:
47-
raise ValueError(f"Access service responded with status code {response.status_code}.")
1+
from csfunctions.service.base import BaseService
482

493

504
class NumberGeneratorService(BaseService):

poetry.lock

Lines changed: 15 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "contactsoftware-functions"
3-
version = "0.14.0"
3+
version = "0.15.0.dev0"
44
readme = "README.md"
55

66
license = "MIT"
@@ -33,6 +33,7 @@ requests-mock = "^1.12.1"
3333
mkdocs = "^1.6.1"
3434
mkdocs-material = "^9.6.14"
3535
mkdocs-link-marker = "^0.1.3"
36+
types-requests = "^2.32.4.20250809"
3637

3738
[tool.ruff]
3839
line-length = 120

0 commit comments

Comments
 (0)