11"""Split API module."""
22
33
4- _CACHE_CONTROL = 'Cache-Control'
5- _CACHE_CONTROL_NO_CACHE = 'no-cache'
6-
7-
84class APIException (Exception ):
95 """Exception to raise when an API call fails."""
106
@@ -17,93 +13,3 @@ def __init__(self, custom_message, status_code=None):
1713 def status_code (self ):
1814 """Return HTTP status code."""
1915 return self ._status_code
20-
21-
22- def headers_from_metadata (sdk_metadata , client_key = None ):
23- """
24- Generate a dict with headers required by data-recording API endpoints.
25-
26- :param sdk_metadata: SDK Metadata object, generated at sdk initialization time.
27- :type sdk_metadata: splitio.client.util.SdkMetadata
28-
29- :param client_key: client key.
30- :type client_key: str
31-
32- :return: A dictionary with headers.
33- :rtype: dict
34- """
35-
36- metadata = {
37- 'SplitSDKVersion' : sdk_metadata .sdk_version ,
38- 'SplitSDKMachineIP' : sdk_metadata .instance_ip ,
39- 'SplitSDKMachineName' : sdk_metadata .instance_name
40- } if sdk_metadata .instance_ip != 'NA' and sdk_metadata .instance_ip != 'unknown' else {
41- 'SplitSDKVersion' : sdk_metadata .sdk_version ,
42- }
43-
44- if client_key is not None :
45- metadata ['SplitSDKClientKey' ] = client_key
46-
47- return metadata
48-
49-
50- class FetchOptions (object ):
51- """Fetch Options object."""
52-
53- def __init__ (self , cache_control_headers = False , change_number = None ):
54- """
55- Class constructor.
56-
57- :param cache_control_headers: Flag for Cache-Control header
58- :type cache_control_headers: bool
59-
60- :param change_number: ChangeNumber to use for bypassing CDN in request.
61- :type change_number: int
62- """
63- self ._cache_control_headers = cache_control_headers
64- self ._change_number = change_number
65-
66- @property
67- def cache_control_headers (self ):
68- """Return cache control headers."""
69- return self ._cache_control_headers
70-
71- @property
72- def change_number (self ):
73- """Return change number."""
74- return self ._change_number
75-
76- def __eq__ (self , other ):
77- """Match between other options."""
78- if self ._cache_control_headers != other ._cache_control_headers :
79- return False
80- if self ._change_number != other ._change_number :
81- return False
82- return True
83-
84-
85- def build_fetch (change_number , fetch_options , metadata ):
86- """
87- Build fetch with new flags if that is the case.
88-
89- :param change_number: Last known timestamp of definition.
90- :type change_number: int
91-
92- :param fetch_options: Fetch options for getting definitions.
93- :type fetch_options: splitio.api.FetchOptions
94-
95- :param metadata: Metadata Headers.
96- :type metadata: dict
97-
98- :return: Objects for fetch
99- :rtype: dict, dict
100- """
101- query = {'since' : change_number }
102- extra_headers = metadata
103- if fetch_options is None :
104- return query , extra_headers
105- if fetch_options .cache_control_headers :
106- extra_headers [_CACHE_CONTROL ] = _CACHE_CONTROL_NO_CACHE
107- if fetch_options .change_number is not None :
108- query ['till' ] = fetch_options .change_number
109- return query , extra_headers
0 commit comments