1
1
import json
2
- from typing import Dict
2
+ from typing import Union , Optional , Dict
3
3
4
4
import requests
5
+ from requests import Response
5
6
6
7
from smile_id_core .Signature import Signature
7
8
from smile_id_core .ServerError import ServerError
15
16
16
17
17
18
class Utilities :
18
- def __init__ (self , partner_id , api_key , sid_server ):
19
+ def __init__ (self , partner_id : str , api_key : str , sid_server : Union [ int , str ] ):
19
20
if not partner_id or not api_key :
20
21
raise ValueError ("partner_id or api_key cannot be null or empty" )
21
22
self .partner_id = partner_id
22
23
self .api_key = api_key
23
24
self .sid_server = sid_server
24
- if sid_server in [0 , 1 ]:
25
- self .url = sid_server_map [sid_server ]
25
+ if sid_server in [0 , 1 , "0" , "1" ]:
26
+ self .url = sid_server_map [int ( sid_server ) ]
26
27
else :
27
- self .url = sid_server
28
-
29
- def get_job_status (self , partner_params , option_params , sec_params = None ):
28
+ self .url = str (sid_server )
29
+
30
+ def get_job_status (
31
+ self ,
32
+ partner_params : Dict ,
33
+ option_params : Dict ,
34
+ sec_params : Optional [Dict ] = None ,
35
+ ) -> Response :
30
36
if sec_params is None :
31
37
sec_params = get_signature (
32
38
self .partner_id , self .api_key , option_params .get ("signature" )
@@ -47,13 +53,15 @@ def get_job_status(self, partner_params, option_params, sec_params=None):
47
53
else :
48
54
options = option_params
49
55
return self .__query_job_status (
50
- partner_params .get ("user_id" ),
51
- partner_params .get ("job_id" ),
56
+ str ( partner_params .get ("user_id" ) ),
57
+ str ( partner_params .get ("job_id" ) ),
52
58
options ,
53
59
sec_params ,
54
60
)
55
61
56
- def __query_job_status (self , user_id , job_id , option_params , sec_params ):
62
+ def __query_job_status (
63
+ self , user_id : str , job_id : str , option_params : Dict , sec_params : Dict
64
+ ) -> Response :
57
65
job_status = Utilities .execute_post (
58
66
f"{ self .url } /job_status" ,
59
67
self .__configure_job_query (user_id , job_id , option_params , sec_params ),
@@ -77,7 +85,9 @@ def __query_job_status(self, user_id, job_id, option_params, sec_params):
77
85
)
78
86
return job_status
79
87
80
- def __configure_job_query (self , user_id , job_id , options , sec_params ):
88
+ def __configure_job_query (
89
+ self , user_id : str , job_id : str , options : Dict , sec_params : Dict
90
+ ) -> Dict :
81
91
return {
82
92
** sec_params ,
83
93
"partner_id" : self .partner_id ,
@@ -88,7 +98,7 @@ def __configure_job_query(self, user_id, job_id, options, sec_params):
88
98
}
89
99
90
100
@staticmethod
91
- def validate_partner_params (partner_params ) :
101
+ def validate_partner_params (partner_params : Dict ) -> None :
92
102
if not partner_params :
93
103
raise ValueError ("Please ensure that you send through partner params" )
94
104
@@ -110,8 +120,11 @@ def validate_partner_params(partner_params):
110
120
111
121
@staticmethod
112
122
def validate_id_params (
113
- sid_server , id_info_params , partner_params , use_validation_api = False
114
- ):
123
+ sid_server : Union [str , int ],
124
+ id_info_params : Dict ,
125
+ partner_params : Dict ,
126
+ use_validation_api = False ,
127
+ ) -> None :
115
128
job_type = partner_params .get ("job_type" )
116
129
if job_type != 6 and not id_info_params .get ("entered" ):
117
130
return
@@ -161,11 +174,11 @@ def validate_id_params(
161
174
raise ValueError (f"key { key } cannot be empty" )
162
175
163
176
@staticmethod
164
- def get_smile_id_services (sid_server ) :
165
- if sid_server in [0 , 1 ]:
166
- url = sid_server_map [sid_server ]
177
+ def get_smile_id_services (sid_server : Union [ str , int ]) -> Response :
178
+ if sid_server in [0 , 1 , "0" , "1" ]:
179
+ url = sid_server_map [int ( sid_server ) ]
167
180
else :
168
- url = sid_server
181
+ url = str ( sid_server )
169
182
response = Utilities .execute_get (f"{ url } /services" )
170
183
if response .status_code != 200 :
171
184
raise ServerError (
@@ -174,7 +187,7 @@ def get_smile_id_services(sid_server):
174
187
return response
175
188
176
189
@staticmethod
177
- def execute_get (url ) :
190
+ def execute_get (url : str ) -> Response :
178
191
resp = requests .get (
179
192
url = url ,
180
193
headers = {
@@ -185,7 +198,7 @@ def execute_get(url):
185
198
return resp
186
199
187
200
@staticmethod
188
- def execute_post (url , payload ) :
201
+ def execute_post (url : str , payload : Dict ) -> Response :
189
202
data = json .dumps (payload )
190
203
resp = requests .post (
191
204
url = url ,
@@ -199,14 +212,14 @@ def execute_post(url, payload):
199
212
return resp
200
213
201
214
202
- def validate_sec_params (sec_key_dict : Dict ):
215
+ def validate_sec_params (sec_key_dict : Dict ) -> None :
203
216
if not sec_key_dict .get ("sec_key" ) and not sec_key_dict .get ("signature" ):
204
217
raise Exception ("Missing key, must provide a 'sec_key' or 'signature' field" )
205
218
if not sec_key_dict .get ("timestamp" ):
206
219
raise Exception ("Missing 'timestamp' field" )
207
220
208
221
209
- def get_signature (partner_id , api_key , is_signature ):
222
+ def get_signature (partner_id : str , api_key : str , is_signature ) -> Dict [ str , str ] :
210
223
sec_key_gen = Signature (partner_id , api_key )
211
224
sec_key_object = (
212
225
sec_key_gen .generate_signature ()
0 commit comments