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
« prev ^ index » next coverage.py v7.4.4, created at 2024-03-27 22:39 +0000
1# coding: utf-8
3"""
4 Fingerprint Pro Server API
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
8 OpenAPI spec version: 3
9 Contact: support@fingerprint.com
10 Generated by: https://github.com/swagger-api/swagger-codegen.git
11"""
13from __future__ import absolute_import
15import copy
16import logging
17import multiprocessing
18import sys
19import urllib3
21import six
22from six.moves import http_client as httplib
25class Configuration(object):
26 """NOTE: This class is auto generated by the swagger code generator program.
28 Ref: https://github.com/swagger-api/swagger-codegen
29 Do not edit the class manually.
30 """
32 _default = None
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
41 # Default Base url
42 self.host = self.get_host(region)
43 # Temp file folder for downloading files
44 self.temp_folder_path = None
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
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
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
93 # Proxy URL
94 self.proxy = None
95 # Safe chars for path_param
96 self.safe_chars_for_path_param = ''
98 # Disable client side validation
99 self.client_side_validation = True
101 @classmethod
102 def set_default(cls, default):
103 cls._default = default
105 @property
106 def logger_file(self):
107 """The logger file.
109 If the logger_file is None, then add stream handler and remove file
110 handler. Otherwise, add file handler and remove stream handler.
112 :param value: The logger_file path.
113 :type: str
114 """
115 return self.__logger_file
117 @logger_file.setter
118 def logger_file(self, value):
119 """The logger file.
121 If the logger_file is None, then add stream handler and remove file
122 handler. Otherwise, add file handler and remove stream handler.
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)
147 @property
148 def debug(self):
149 """Debug status
151 :param value: The debug status, True or False.
152 :type: bool
153 """
154 return self.__debug
156 @debug.setter
157 def debug(self, value):
158 """Debug status
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
178 @property
179 def logger_format(self):
180 """The logger format.
182 The logger_formatter will be updated when sets logger_format.
184 :param value: The format string.
185 :type: str
186 """
187 return self.__logger_format
189 @logger_format.setter
190 def logger_format(self, value):
191 """The logger format.
193 The logger_formatter will be updated when sets logger_format.
195 :param value: The format string.
196 :type: str
197 """
198 self.__logger_format = value
199 self.logger_formatter = logging.Formatter(self.__logger_format)
201 def get_api_key_with_prefix(self, identifier):
202 """Gets API key (with prefix if set).
204 :param identifier: The identifier of apiKey.
205 :return: The token for api key authentication.
206 """
208 if self.refresh_api_key_hook:
209 self.refresh_api_key_hook(self)
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
219 def get_basic_auth_token(self):
220 """Gets HTTP basic authentication header (string).
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')
228 def auth_settings(self):
229 """Gets Auth Settings dict for api client.
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 }
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")
257 def to_debug_report(self):
258 """Gets the essential information for debugging.
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)