Skip to content

Update dependencies and api #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: develop
Choose a base branch
from
Open
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
28 changes: 3 additions & 25 deletions bayonet/bayonet.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,16 @@ class _BayonetTransport(object):
Responsible for implementing the wire protocol for making requests to the
Bayonet API.
"""
_SUPPORTED_API_VERSIONS = ['1']

_DEFAULT_DOMAIN = '.bayonet.io'
_HOST_API = 'api'
_HOST_FINGERPRINTING = 'fingerprinting'

# RPC style means that the argument and result of a route are contained in
# the HTTP body.
_ROUTE_STYLE_RPC = 'rpc'

def __init__(self,
api_key,
api_version,
user_agent=None,
headers=None):
"""
Expand All @@ -40,15 +37,6 @@ def __init__(self,
'Expected dict, got %r' % headers

self.api_key = api_key

if not api_version:
raise InvalidClientSetupError("Please specify Api version")
elif api_version not in BayonetClient._SUPPORTED_API_VERSIONS:
raise InvalidClientSetupError(
"This library does not support version specified. Consider updating your dependencies")
else:
self.api_version = api_version

self._headers = headers

base_user_agent = 'OfficialBayonetPythonSDK'
Expand All @@ -64,23 +52,14 @@ def __init__(self,
BayonetClient._DEFAULT_DOMAIN)
self._api_hostname = os.environ.get('BAYONET_API_HOST',
'api' + self._domain)
self._fingerprinting_api_hostname = os.environ.get('BAYONET_FINGERPRINTING_API_HOST',
'fingerprinting' + self._domain)

self._api_version_namespace = "v" + api_version
self._api_version_namespace = "v2"

def fully_qualified_api_hostname(self):
return 'https://{api_host_name}/{api_version_namespace}'.format(
api_host_name=self._api_hostname,
api_version_namespace=self._api_version_namespace
)

def fully_qualified_fingerprinting_api_hostname(self):
return 'https://{fingerprinting_api_hostname}/{api_version_namespace}'.format(
fingerprinting_api_hostname=self._fingerprinting_api_hostname,
api_version_namespace=self._api_version_namespace
)

def request(self, route, json_params):
"""
Makes a request to the Bayonet API and in the process validates
Expand Down Expand Up @@ -108,11 +87,8 @@ def request_json_string(self,
"""
# Fully qualified hostname
fq_hostname = self.fully_qualified_api_hostname()
if route == "/get-fingerprint-data":
fq_hostname = self.fully_qualified_fingerprinting_api_hostname()

url = "{}{}".format(fq_hostname, route)

headers = {'User-Agent': self._user_agent,
'Content-Type': 'application/json'}
if self._headers:
Expand All @@ -125,8 +101,10 @@ def request_json_string(self,
data=request_json_arg)

if resp.status_code == 200:
s.close()
return BayonetResponse(resp)
else:
s.close()
raise BayonetError('', request_json_arg, headers, resp.status_code, resp.content)


Expand Down
31 changes: 21 additions & 10 deletions bayonet/bayonet_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,42 @@
class BayonetBase(object):
__metaclass__ = ABCMeta

def __init__(self, api_key, version):
def __init__(self, api_key):
self.api_key = api_key
self.version = version

@abstractmethod
def request(self, route, arg):
pass

def consulting(self, params):
serialized = self.json_from_params(params)
return self.request('/consulting', serialized)
return self.request('/sigma/consult', serialized)

def feedback(self, params):
def update_transaction(self, params):
serialized = self.json_from_params(params)
return self.request('/feedback', serialized)
return self.request('/sigma/update-transaction', serialized)

def feedback_historical(self, params):
serialized = self.json_from_params(params)
return self.request('/feedback-historical', serialized)

def get_fingerprint_data(self, params):
return self.request('/sigma/feedback-historical', serialized)

def blocklist_add(self, params):
serialized = self.json_from_params(params)
return self.request('/sigma/labels/block/add', serialized)

def blocklist_remove(self, params):
serialized = self.json_from_params(params)
return self.request('/sigma/labels/block/remove', serialized)

def whitelist_add(self, params):
serialized = self.json_from_params(params)
return self.request('/sigma/labels/whitelist/add', serialized)

def whitelist_add(self, params):
serialized = self.json_from_params(params)
return self.request('/get-fingerprint-data', serialized)
return self.request('/sigma/labels/whitelist/remove', serialized)

def json_from_params(self, params):
# Add api_key to params
params['api_key'] = self.api_key
params['auth'] = {'api_key': self.api_key}
return json.dumps(params)
8 changes: 2 additions & 6 deletions bayonet/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
class BayonetResponse(object):
def __init__(self, response):
parsed_response = json.loads(response.content)
if 'feedback_api_trans_code' in parsed_response:
self.feedback_api_trans_code = parsed_response['feedback_api_trans_code']
if 'bayonet_tracking_id' in parsed_response:
self.bayonet_tracking_id = parsed_response['bayonet_tracking_id']
else:
self.feedback_api_trans_code = None
if 'rules_triggered' in parsed_response:
Expand All @@ -32,8 +32,4 @@ def __init__(self, response):
self.request_body = parsed_response['request_body']
else:
self.request_body = None
if 'bayonet_fingerprint' in parsed_response:
self.bayonet_fingerprint = parsed_response['bayonet_fingerprint']
else:
self.bayonet_fingerprint = None
self.raw = parsed_response
4 changes: 3 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import warnings
from setuptools import setup

version = "1.1.0"
version = "2.0.0"

path, script = os.path.split(sys.argv[0])
os.chdir(os.path.abspath(path))
Expand Down Expand Up @@ -41,6 +41,8 @@
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
])
Loading