mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
from base64 import b64encode
|
|
import requests
|
|
|
|
API_URL = 'https://api.signifyd.com/v3'
|
|
|
|
|
|
class SignifydAPI:
|
|
_teamid = None
|
|
_key = None
|
|
|
|
def __init__(self, key, teamid):
|
|
self._key = b64encode(key.encode()).decode().strip('=')
|
|
self._teamid = teamid
|
|
|
|
def _get_headers(self):
|
|
headers = {
|
|
'Authorization': 'Basic ' + self._key,
|
|
'Content-Type': 'application/json',
|
|
}
|
|
return headers
|
|
|
|
def _request(self, method, path, headers=None, json=None):
|
|
request_headers = {
|
|
**(headers or {}),
|
|
**self._get_headers()
|
|
}
|
|
request = requests.request(method, API_URL + path, headers=request_headers, json=json)
|
|
return request
|
|
|
|
def get(self, path, headers=None):
|
|
return self._request('GET', path, headers=headers)
|
|
|
|
def post(self, path, headers=None, json=None):
|
|
return self._request('POST', path, headers=headers, json=json)
|
|
|
|
def post_case(self, values):
|
|
# data = json.dumps(values, indent=4, sort_keys=True, default=str)
|
|
r = self.post('/orders/events/sales', json=values)
|
|
return r.json()
|
|
|
|
def get_decision(self, case_id):
|
|
return self.get(f'/orders/{case_id}/decision')
|
|
|
|
def register_webhook(self, url):
|
|
return self.post(f"/teams/{self._teamid}/webhooks", json={'url': url})
|
|
|
|
def test_webhook(self, url):
|
|
# https://api.signifyd.com/v3/webhooks/tests
|
|
return self.post('/webhooks/tests', json={'url': url}) |