Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion splitio/api/commons.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def record_telemetry(status_code, elapsed, metric_name, telemetry_runtime_produc
class FetchOptions(object):
"""Fetch Options object."""

def __init__(self, cache_control_headers=False, change_number=None):
def __init__(self, cache_control_headers=False, change_number=None, sets=None):
"""
Class constructor.

Expand All @@ -66,9 +66,13 @@ def __init__(self, cache_control_headers=False, change_number=None):

:param change_number: ChangeNumber to use for bypassing CDN in request.
:type change_number: int

:param sets: list of flag sets
:type sets: list
"""
self._cache_control_headers = cache_control_headers
self._change_number = change_number
self._sets = sets

@property
def cache_control_headers(self):
Expand All @@ -80,12 +84,19 @@ def change_number(self):
"""Return change number."""
return self._change_number

@property
def sets(self):
"""Return sets."""
return self._sets

def __eq__(self, other):
"""Match between other options."""
if self._cache_control_headers != other._cache_control_headers:
return False
if self._change_number != other._change_number:
return False
if self._sets != other._sets:
return False
return True


Expand Down Expand Up @@ -113,4 +124,6 @@ def build_fetch(change_number, fetch_options, metadata):
extra_headers[_CACHE_CONTROL] = _CACHE_CONTROL_NO_CACHE
if fetch_options.change_number is not None:
query['till'] = fetch_options.change_number
if fetch_options.sets is not None:
query['sets'] = fetch_options.sets
return query, extra_headers
2 changes: 2 additions & 0 deletions splitio/api/splits.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ def fetch_splits(self, change_number, fetch_options):
if 200 <= response.status_code < 300:
return json.loads(response.body)
else:
if response.status_code == 414:
_LOGGER.error('Error fetching feature flags; the amount of flag sets provided are too big, causing uri length error.')
raise APIException(response.body, response.status_code)
except HttpClientException as exc:
_LOGGER.error('Error fetching feature flags because an exception was raised by the HTTPClient')
Expand Down
8 changes: 4 additions & 4 deletions tests/api/test_splits_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ def test_fetch_split_changes(self, mocker):
httpclient.get.return_value = client.HttpResponse(200, '{"prop1": "value1"}')
split_api = splits.SplitsAPI(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())

response = split_api.fetch_splits(123, FetchOptions())
response = split_api.fetch_splits(123, FetchOptions(False, None, 'set1,set2'))
assert response['prop1'] == 'value1'
assert httpclient.get.mock_calls == [mocker.call('sdk', '/splitChanges', 'some_api_key',
extra_headers={
'SplitSDKVersion': '1.0',
'SplitSDKMachineIP': '1.2.3.4',
'SplitSDKMachineName': 'some'
},
query={'since': 123})]
query={'since': 123, 'sets': 'set1,set2'})]

httpclient.reset_mock()
response = split_api.fetch_splits(123, FetchOptions(True))
Expand All @@ -42,7 +42,7 @@ def test_fetch_split_changes(self, mocker):
query={'since': 123})]

httpclient.reset_mock()
response = split_api.fetch_splits(123, FetchOptions(True, 123))
response = split_api.fetch_splits(123, FetchOptions(True, 123, 'set3'))
assert response['prop1'] == 'value1'
assert httpclient.get.mock_calls == [mocker.call('sdk', '/splitChanges', 'some_api_key',
extra_headers={
Expand All @@ -51,7 +51,7 @@ def test_fetch_split_changes(self, mocker):
'SplitSDKMachineName': 'some',
'Cache-Control': 'no-cache'
},
query={'since': 123, 'till': 123})]
query={'since': 123, 'till': 123, 'sets': 'set3'})]

httpclient.reset_mock()
def raise_exception(*args, **kwargs):
Expand Down