Skip to content

Commit 0700dbc

Browse files
author
Matias Melograno
committed
moved data to commons
1 parent a9e8a8f commit 0700dbc

20 files changed

+131
-114
lines changed

splitio/api/__init__.py

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
"""Split API module."""
22

33

4-
_CACHE_CONTROL = 'Cache-Control'
5-
_CACHE_CONTROL_NO_CACHE = 'no-cache'
6-
7-
84
class 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

splitio/api/auth.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import logging
44
import json
55

6-
from splitio.api import APIException, headers_from_metadata
6+
from splitio.api import APIException
7+
from splitio.api.commons import headers_from_metadata
78
from splitio.api.client import HttpClientException
89
from splitio.models.token import from_raw
910

splitio/api/commons.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
"""Commons module."""
2+
3+
4+
_CACHE_CONTROL = 'Cache-Control'
5+
_CACHE_CONTROL_NO_CACHE = 'no-cache'
6+
7+
8+
def headers_from_metadata(sdk_metadata, client_key=None):
9+
"""
10+
Generate a dict with headers required by data-recording API endpoints.
11+
12+
:param sdk_metadata: SDK Metadata object, generated at sdk initialization time.
13+
:type sdk_metadata: splitio.client.util.SdkMetadata
14+
15+
:param client_key: client key.
16+
:type client_key: str
17+
18+
:return: A dictionary with headers.
19+
:rtype: dict
20+
"""
21+
22+
metadata = {
23+
'SplitSDKVersion': sdk_metadata.sdk_version,
24+
'SplitSDKMachineIP': sdk_metadata.instance_ip,
25+
'SplitSDKMachineName': sdk_metadata.instance_name
26+
} if sdk_metadata.instance_ip != 'NA' and sdk_metadata.instance_ip != 'unknown' else {
27+
'SplitSDKVersion': sdk_metadata.sdk_version,
28+
}
29+
30+
if client_key is not None:
31+
metadata['SplitSDKClientKey'] = client_key
32+
33+
return metadata
34+
35+
36+
class FetchOptions(object):
37+
"""Fetch Options object."""
38+
39+
def __init__(self, cache_control_headers=False, change_number=None):
40+
"""
41+
Class constructor.
42+
43+
:param cache_control_headers: Flag for Cache-Control header
44+
:type cache_control_headers: bool
45+
46+
:param change_number: ChangeNumber to use for bypassing CDN in request.
47+
:type change_number: int
48+
"""
49+
self._cache_control_headers = cache_control_headers
50+
self._change_number = change_number
51+
52+
@property
53+
def cache_control_headers(self):
54+
"""Return cache control headers."""
55+
return self._cache_control_headers
56+
57+
@property
58+
def change_number(self):
59+
"""Return change number."""
60+
return self._change_number
61+
62+
def __eq__(self, other):
63+
"""Match between other options."""
64+
if self._cache_control_headers != other._cache_control_headers:
65+
return False
66+
if self._change_number != other._change_number:
67+
return False
68+
return True
69+
70+
71+
def build_fetch(change_number, fetch_options, metadata):
72+
"""
73+
Build fetch with new flags if that is the case.
74+
75+
:param change_number: Last known timestamp of definition.
76+
:type change_number: int
77+
78+
:param fetch_options: Fetch options for getting definitions.
79+
:type fetch_options: splitio.api.commons.FetchOptions
80+
81+
:param metadata: Metadata Headers.
82+
:type metadata: dict
83+
84+
:return: Objects for fetch
85+
:rtype: dict, dict
86+
"""
87+
query = {'since': change_number}
88+
extra_headers = metadata
89+
if fetch_options is None:
90+
return query, extra_headers
91+
if fetch_options.cache_control_headers:
92+
extra_headers[_CACHE_CONTROL] = _CACHE_CONTROL_NO_CACHE
93+
if fetch_options.change_number is not None:
94+
query['till'] = fetch_options.change_number
95+
return query, extra_headers

splitio/api/events.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
"""Events API module."""
22
import logging
33

4-
from splitio.api import APIException, headers_from_metadata
4+
from splitio.api import APIException
55
from splitio.api.client import HttpClientException
6+
from splitio.api.commons import headers_from_metadata
67

78

89
_LOGGER = logging.getLogger(__name__)

splitio/api/impressions.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import logging
44
from itertools import groupby
55

6-
from splitio.api import APIException, headers_from_metadata
6+
from splitio.api import APIException
77
from splitio.api.client import HttpClientException
8+
from splitio.api.commons import headers_from_metadata
89
from splitio.engine.impressions import ImpressionsMode
910

1011

splitio/api/segments.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import json
44
import logging
55

6-
from splitio.api import APIException, headers_from_metadata, build_fetch
6+
from splitio.api import APIException
7+
from splitio.api.commons import headers_from_metadata, build_fetch
78
from splitio.api.client import HttpClientException
89

910

@@ -40,7 +41,7 @@ def fetch_segment(self, segment_name, change_number, fetch_options):
4041
:type change_number: int
4142
4243
:param fetch_options: Fetch options for getting segment definitions.
43-
:type fetch_options: splitio.api.FetchOptions
44+
:type fetch_options: splitio.api.commons.FetchOptions
4445
4546
:return: Json representation of a segmentChange response.
4647
:rtype: dict

splitio/api/splits.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import logging
44
import json
55

6-
from splitio.api import APIException, headers_from_metadata, build_fetch
6+
from splitio.api import APIException
7+
from splitio.api.commons import headers_from_metadata, build_fetch
78
from splitio.api.client import HttpClientException
89

910

@@ -36,7 +37,7 @@ def fetch_splits(self, change_number, fetch_options):
3637
:type change_number: int
3738
3839
:param fetch_options: Fetch options for getting split definitions.
39-
:type fetch_options: splitio.api.FetchOptions
40+
:type fetch_options: splitio.api.commons.FetchOptions
4041
4142
:return: Json representation of a splitChanges response.
4243
:rtype: dict

splitio/api/telemetry.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
"""Telemetry API Module."""
22
import logging
33

4-
from splitio.api import APIException, headers_from_metadata
4+
from splitio.api import APIException
5+
from splitio.api.commons import headers_from_metadata
56
from splitio.api.client import HttpClientException
67

78

splitio/client/input_validator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
import re
55
import math
66

7-
from splitio.api import APIException, FetchOptions
7+
from splitio.api import APIException
8+
from splitio.api.commons import FetchOptions
89
from splitio.client.key import Key
910
from splitio.engine.evaluator import CONTROL
1011

splitio/push/splitsse.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from enum import Enum
55
from splitio.push.sse import SSEClient, SSE_EVENT_ERROR
66
from splitio.util.threadutil import EventGroup
7-
from splitio.api import headers_from_metadata
7+
from splitio.api.commons import headers_from_metadata
88

99

1010
_LOGGER = logging.getLogger(__name__)

0 commit comments

Comments
 (0)