1+ from typing import Optional
2+
13import requests
24
35
@@ -6,7 +8,7 @@ class Service:
68 Provides access to services on the elements instance, e.g. generating numbers.
79 """
810
9- def __init__ (self , service_url : str , service_token : str ):
11+ def __init__ (self , service_url : str | None , service_token : str | None ):
1012 self .generator = NumberGeneratorService (service_url , service_token )
1113
1214
@@ -23,7 +25,7 @@ def __init__(self, service_url: str | None, service_token: str | None):
2325 self .service_url = service_url
2426 self .service_token = service_token
2527
26- def request (self , endpoint : str , method : str = "GET" , params : dict = None ) -> dict | list :
28+ def request (self , endpoint : str , method : str = "GET" , params : Optional [ dict ] = None ) -> dict | list :
2729 """
2830 Make a request to the access service.
2931 """
@@ -35,7 +37,7 @@ def request(self, endpoint: str, method: str = "GET", params: dict = None) -> di
3537 headers = {"Authorization" : f"Bearer { self .service_token } " }
3638 params = params or {}
3739 url = self .service_url .rstrip ("/" ) + "/" + endpoint .lstrip ("/" )
38- response = requests .request (method , url = url , params = params , headers = headers )
40+ response = requests .request (method , url = url , params = params , headers = headers , timeout = 10 )
3941
4042 if response .status_code == 401 :
4143 raise Unauthorized
@@ -78,4 +80,8 @@ def get_numbers(self, name: str, count: int) -> list[int]:
7880 """
7981 params = {"name" : name , "count" : count }
8082 data = self .request (self .endpoint , params = params )
83+ if not isinstance (data , dict ):
84+ raise ValueError (f"Access service returned invalid data. Expected dict, got { type (data )} " )
85+ if "numbers" not in data :
86+ raise ValueError (f"Access service returned invalid data. Expected 'numbers' key, got { data .keys ()} " )
8187 return data ["numbers" ]
0 commit comments