Coverage for fingerprint_pro_server_api_sdk/configuration.py: 79%

100 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-03-27 22:39 +0000

1# coding: utf-8 

2 

3""" 

4 Fingerprint Pro Server API 

5 

6 Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. # noqa: E501 

7 

8 OpenAPI spec version: 3 

9 Contact: support@fingerprint.com 

10 Generated by: https://github.com/swagger-api/swagger-codegen.git 

11""" 

12 

13from __future__ import absolute_import 

14 

15import copy 

16import logging 

17import multiprocessing 

18import sys 

19import urllib3 

20 

21import six 

22from six.moves import http_client as httplib 

23 

24 

25class Configuration(object): 

26 """NOTE: This class is auto generated by the swagger code generator program. 

27 

28 Ref: https://github.com/swagger-api/swagger-codegen 

29 Do not edit the class manually. 

30 """ 

31 

32 _default = None 

33 

34 def __init__(self, api_key, region="us"): 

35 """Constructor""" 

36 if self._default: 

37 for key in self._default.__dict__.keys(): 

38 self.__dict__[key] = copy.copy(self._default.__dict__[key]) 

39 return 

40 

41 # Default Base url 

42 self.host = self.get_host(region) 

43 # Temp file folder for downloading files 

44 self.temp_folder_path = None 

45 

46 # Authentication Settings 

47 # dict to store API key(s) 

48 self.api_key = {} 

49 self.api_key['Auth-API-Key'] = api_key 

50 # dict to store API prefix (e.g. Bearer) 

51 self.api_key_prefix = {} 

52 # function to refresh API key if expired 

53 self.refresh_api_key_hook = None 

54 # Username for HTTP basic authentication 

55 self.username = "" 

56 # Password for HTTP basic authentication 

57 self.password = "" 

58 # Logging Settings 

59 self.logger = {} 

60 self.logger["package_logger"] = logging.getLogger("fingerprint_pro_server_api_sdk") 

61 self.logger["urllib3_logger"] = logging.getLogger("urllib3") 

62 # Log format 

63 self.logger_format = '%(asctime)s %(levelname)s %(message)s' 

64 # Log stream handler 

65 self.logger_stream_handler = None 

66 # Log file handler 

67 self.logger_file_handler = None 

68 # Debug file location 

69 self.logger_file = None 

70 # Debug switch 

71 self.debug = False 

72 

73 # SSL/TLS verification 

74 # Set this to false to skip verifying SSL certificate when calling API 

75 # from https server. 

76 self.verify_ssl = True 

77 # Set this to customize the certificate file to verify the peer. 

78 self.ssl_ca_cert = None 

79 # client certificate file 

80 self.cert_file = None 

81 # client key file 

82 self.key_file = None 

83 # Set this to True/False to enable/disable SSL hostname verification. 

84 self.assert_hostname = None 

85 

86 # urllib3 connection pool's maximum number of connections saved 

87 # per pool. urllib3 uses 1 connection as default value, but this is 

88 # not the best value when you are making a lot of possibly parallel 

89 # requests to the same host, which is often the case here. 

90 # cpu_count * 5 is used as default value to increase performance. 

91 self.connection_pool_maxsize = multiprocessing.cpu_count() * 5 

92 

93 # Proxy URL 

94 self.proxy = None 

95 # Safe chars for path_param 

96 self.safe_chars_for_path_param = '' 

97 

98 # Disable client side validation 

99 self.client_side_validation = True 

100 

101 @classmethod 

102 def set_default(cls, default): 

103 cls._default = default 

104 

105 @property 

106 def logger_file(self): 

107 """The logger file. 

108 

109 If the logger_file is None, then add stream handler and remove file 

110 handler. Otherwise, add file handler and remove stream handler. 

111 

112 :param value: The logger_file path. 

113 :type: str 

114 """ 

115 return self.__logger_file 

116 

117 @logger_file.setter 

118 def logger_file(self, value): 

119 """The logger file. 

120 

121 If the logger_file is None, then add stream handler and remove file 

122 handler. Otherwise, add file handler and remove stream handler. 

123 

124 :param value: The logger_file path. 

125 :type: str 

126 """ 

127 self.__logger_file = value 

128 if self.__logger_file: 

129 # If set logging file, 

130 # then add file handler and remove stream handler. 

131 self.logger_file_handler = logging.FileHandler(self.__logger_file) 

132 self.logger_file_handler.setFormatter(self.logger_formatter) 

133 for _, logger in six.iteritems(self.logger): 

134 logger.addHandler(self.logger_file_handler) 

135 if self.logger_stream_handler: 

136 logger.removeHandler(self.logger_stream_handler) 

137 else: 

138 # If not set logging file, 

139 # then add stream handler and remove file handler. 

140 self.logger_stream_handler = logging.StreamHandler() 

141 self.logger_stream_handler.setFormatter(self.logger_formatter) 

142 for _, logger in six.iteritems(self.logger): 

143 logger.addHandler(self.logger_stream_handler) 

144 if self.logger_file_handler: 

145 logger.removeHandler(self.logger_file_handler) 

146 

147 @property 

148 def debug(self): 

149 """Debug status 

150 

151 :param value: The debug status, True or False. 

152 :type: bool 

153 """ 

154 return self.__debug 

155 

156 @debug.setter 

157 def debug(self, value): 

158 """Debug status 

159 

160 :param value: The debug status, True or False. 

161 :type: bool 

162 """ 

163 self.__debug = value 

164 if self.__debug: 

165 # if debug status is True, turn on debug logging 

166 for _, logger in six.iteritems(self.logger): 

167 logger.setLevel(logging.DEBUG) 

168 # turn on httplib debug 

169 httplib.HTTPConnection.debuglevel = 1 

170 else: 

171 # if debug status is False, turn off debug logging, 

172 # setting log level to default `logging.WARNING` 

173 for _, logger in six.iteritems(self.logger): 

174 logger.setLevel(logging.WARNING) 

175 # turn off httplib debug 

176 httplib.HTTPConnection.debuglevel = 0 

177 

178 @property 

179 def logger_format(self): 

180 """The logger format. 

181 

182 The logger_formatter will be updated when sets logger_format. 

183 

184 :param value: The format string. 

185 :type: str 

186 """ 

187 return self.__logger_format 

188 

189 @logger_format.setter 

190 def logger_format(self, value): 

191 """The logger format. 

192 

193 The logger_formatter will be updated when sets logger_format. 

194 

195 :param value: The format string. 

196 :type: str 

197 """ 

198 self.__logger_format = value 

199 self.logger_formatter = logging.Formatter(self.__logger_format) 

200 

201 def get_api_key_with_prefix(self, identifier): 

202 """Gets API key (with prefix if set). 

203 

204 :param identifier: The identifier of apiKey. 

205 :return: The token for api key authentication. 

206 """ 

207 

208 if self.refresh_api_key_hook: 

209 self.refresh_api_key_hook(self) 

210 

211 key = self.api_key.get(identifier) 

212 if key: 

213 prefix = self.api_key_prefix.get(identifier) 

214 if prefix: 

215 return "%s %s" % (prefix, key) 

216 else: 

217 return key 

218 

219 def get_basic_auth_token(self): 

220 """Gets HTTP basic authentication header (string). 

221 

222 :return: The token for basic HTTP authentication. 

223 """ 

224 return urllib3.util.make_headers( 

225 basic_auth=self.username + ':' + self.password 

226 ).get('authorization') 

227 

228 def auth_settings(self): 

229 """Gets Auth Settings dict for api client. 

230 

231 :return: The Auth Settings information dict. 

232 """ 

233 return { 

234 'ApiKeyHeader': 

235 { 

236 'type': 'api_key', 

237 'in': 'header', 

238 'key': 'Auth-API-Key', 

239 'value': self.get_api_key_with_prefix('Auth-API-Key') 

240 }, 

241 'ApiKeyQuery': 

242 { 

243 'type': 'api_key', 

244 'in': 'query', 

245 'key': 'api_key', 

246 'value': self.get_api_key_with_prefix('api_key') 

247 }, 

248 } 

249 

250 def get_host(self, region): 

251 return { 

252 "us": "https://api.fpjs.io", 

253 "eu": "https://eu.api.fpjs.io", 

254 "ap": "https://ap.api.fpjs.io", 

255 }.get(region, "https://api.fpjs.io") 

256 

257 def to_debug_report(self): 

258 """Gets the essential information for debugging. 

259 

260 :return: The report for debugging. 

261 """ 

262 return "Python SDK Debug Report:\n"\ 

263 "OS: {env}\n"\ 

264 "Python Version: {pyversion}\n"\ 

265 "Version of the API: 3\n"\ 

266 "SDK Package Version: 5.0.0".\ 

267 format(env=sys.platform, pyversion=sys.version)