Skip to content

Commit 2adfb50

Browse files
author
Bilal Al
committed
added spec query parameter
1 parent 3310243 commit 2adfb50

File tree

9 files changed

+96
-86
lines changed

9 files changed

+96
-86
lines changed

splitio/api/auth.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from splitio.api import APIException
77
from splitio.api.commons import headers_from_metadata, record_telemetry
8+
from splitio.api.commons import _SPEC_VERSION
89
from splitio.util.time import get_current_epoch_time_ms
910
from splitio.api.client import HttpClientException
1011
from splitio.models.token import from_raw
@@ -43,7 +44,7 @@ def authenticate(self):
4344
try:
4445
response = self._client.get(
4546
'auth',
46-
'/v2/auth',
47+
'/v2/auth?s=' + _SPEC_VERSION,
4748
self._sdk_key,
4849
extra_headers=self._metadata,
4950
)

splitio/api/commons.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
_CACHE_CONTROL = 'Cache-Control'
55
_CACHE_CONTROL_NO_CACHE = 'no-cache'
6-
6+
_SPEC_VERSION = '1.1'
77

88
def headers_from_metadata(sdk_metadata, client_key=None):
99
"""
@@ -57,7 +57,7 @@ def record_telemetry(status_code, elapsed, metric_name, telemetry_runtime_produc
5757
class FetchOptions(object):
5858
"""Fetch Options object."""
5959

60-
def __init__(self, cache_control_headers=False, change_number=None, sets=None):
60+
def __init__(self, cache_control_headers=False, change_number=None, sets=None, spec=_SPEC_VERSION):
6161
"""
6262
Class constructor.
6363
@@ -73,6 +73,7 @@ def __init__(self, cache_control_headers=False, change_number=None, sets=None):
7373
self._cache_control_headers = cache_control_headers
7474
self._change_number = change_number
7575
self._sets = sets
76+
self._spec = spec
7677

7778
@property
7879
def cache_control_headers(self):
@@ -89,6 +90,11 @@ def sets(self):
8990
"""Return sets."""
9091
return self._sets
9192

93+
@property
94+
def spec(self):
95+
"""Return sets."""
96+
return self._spec
97+
9298
def __eq__(self, other):
9399
"""Match between other options."""
94100
if self._cache_control_headers != other._cache_control_headers:
@@ -97,6 +103,8 @@ def __eq__(self, other):
97103
return False
98104
if self._sets != other._sets:
99105
return False
106+
if self._spec != other._spec:
107+
return False
100108
return True
101109

102110

@@ -116,7 +124,8 @@ def build_fetch(change_number, fetch_options, metadata):
116124
:return: Objects for fetch
117125
:rtype: dict, dict
118126
"""
119-
query = {'since': change_number}
127+
query = {'s': fetch_options.spec} if fetch_options.spec is not None else {}
128+
query['since'] = change_number
120129
extra_headers = metadata
121130
if fetch_options is None:
122131
return query, extra_headers

splitio/sync/segment.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,13 @@ def synchronize_segment(self, segment_name, till=None):
144144
:return: True if no error occurs. False otherwise.
145145
:rtype: bool
146146
"""
147-
fetch_options = FetchOptions(True) # Set Cache-Control to no-cache
147+
fetch_options = FetchOptions(True, None, None, None) # Set Cache-Control to no-cache
148148
successful_sync, remaining_attempts, change_number = self._attempt_segment_sync(segment_name, fetch_options, till)
149149
attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
150150
if successful_sync: # succedeed sync
151151
_LOGGER.debug('Refresh completed in %d attempts.', attempts)
152152
return True
153-
with_cdn_bypass = FetchOptions(True, change_number) # Set flag for bypassing CDN
153+
with_cdn_bypass = FetchOptions(True, change_number, None, None) # Set flag for bypassing CDN
154154
without_cdn_successful_sync, remaining_attempts, change_number = self._attempt_segment_sync(segment_name, with_cdn_bypass, till)
155155
without_cdn_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
156156
if without_cdn_successful_sync:

tests/api/test_auth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_auth(self, mocker):
3737
call_made = httpclient.get.mock_calls[0]
3838

3939
# validate positional arguments
40-
assert call_made[1] == ('auth', '/v2/auth', 'some_api_key')
40+
assert call_made[1] == ('auth', '/v2/auth?s=1.1', 'some_api_key')
4141

4242
# validate key-value args (headers)
4343
assert call_made[2]['extra_headers'] == {

tests/api/test_segments_api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def test_fetch_segment_changes(self, mocker):
1818
httpclient.get.return_value = client.HttpResponse(200, '{"prop1": "value1"}')
1919
segment_api = segments.SegmentsAPI(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
2020

21-
response = segment_api.fetch_segment('some_segment', 123, FetchOptions())
21+
response = segment_api.fetch_segment('some_segment', 123, FetchOptions(None, None, None, None))
2222
assert response['prop1'] == 'value1'
2323
assert httpclient.get.mock_calls == [mocker.call('sdk', '/segmentChanges/some_segment', 'some_api_key',
2424
extra_headers={
@@ -29,7 +29,7 @@ def test_fetch_segment_changes(self, mocker):
2929
query={'since': 123})]
3030

3131
httpclient.reset_mock()
32-
response = segment_api.fetch_segment('some_segment', 123, FetchOptions(True))
32+
response = segment_api.fetch_segment('some_segment', 123, FetchOptions(True, None, None, None))
3333
assert response['prop1'] == 'value1'
3434
assert httpclient.get.mock_calls == [mocker.call('sdk', '/segmentChanges/some_segment', 'some_api_key',
3535
extra_headers={
@@ -41,7 +41,7 @@ def test_fetch_segment_changes(self, mocker):
4141
query={'since': 123})]
4242

4343
httpclient.reset_mock()
44-
response = segment_api.fetch_segment('some_segment', 123, FetchOptions(True, 123))
44+
response = segment_api.fetch_segment('some_segment', 123, FetchOptions(True, 123, None, None))
4545
assert response['prop1'] == 'value1'
4646
assert httpclient.get.mock_calls == [mocker.call('sdk', '/segmentChanges/some_segment', 'some_api_key',
4747
extra_headers={

tests/api/test_splits_api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_fetch_split_changes(self, mocker):
2727
'SplitSDKMachineIP': '1.2.3.4',
2828
'SplitSDKMachineName': 'some'
2929
},
30-
query={'since': 123, 'sets': 'set1,set2'})]
30+
query={'s': '1.1', 'since': 123, 'sets': 'set1,set2'})]
3131

3232
httpclient.reset_mock()
3333
response = split_api.fetch_splits(123, FetchOptions(True))
@@ -39,7 +39,7 @@ def test_fetch_split_changes(self, mocker):
3939
'SplitSDKMachineName': 'some',
4040
'Cache-Control': 'no-cache'
4141
},
42-
query={'since': 123})]
42+
query={'s': '1.1', 'since': 123})]
4343

4444
httpclient.reset_mock()
4545
response = split_api.fetch_splits(123, FetchOptions(True, 123, 'set3'))
@@ -51,7 +51,7 @@ def test_fetch_split_changes(self, mocker):
5151
'SplitSDKMachineName': 'some',
5252
'Cache-Control': 'no-cache'
5353
},
54-
query={'since': 123, 'till': 123, 'sets': 'set3'})]
54+
query={'s': '1.1', 'since': 123, 'till': 123, 'sets': 'set3'})]
5555

5656
httpclient.reset_mock()
5757
def raise_exception(*args, **kwargs):

0 commit comments

Comments
 (0)