mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
import requests
|
|
from json import dumps
|
|
|
|
|
|
class GSORequest:
|
|
|
|
BASE_URL = 'https://api.gso.com/Rest/v1'
|
|
|
|
def __init__(self, production, username, password, account_number):
|
|
self.username = username
|
|
self.password = password
|
|
self.account_number = account_number
|
|
self.headers = self.make_headers()
|
|
self._get_token()
|
|
|
|
def make_headers(self):
|
|
return {
|
|
'Content-Type': 'application/json',
|
|
'Accept-Encoding': 'gzip',
|
|
'UserName': self.username,
|
|
'PassWord': self.password,
|
|
'AccountNumber': self.account_number,
|
|
}
|
|
|
|
# Token Lasts 12 hours and should be refreshed accordingly.
|
|
# Might need to change to prevent too many calls to the API
|
|
def _get_token(self):
|
|
endpoint_url = self.BASE_URL + '/token'
|
|
response = requests.get(endpoint_url, headers=self.headers)
|
|
response.raise_for_status()
|
|
self.headers.update({'Token': response.headers['Token']})
|
|
|
|
def call(self, http_method, endpoint_url, payload):
|
|
url = self.BASE_URL + endpoint_url
|
|
result = requests.request(http_method, url, data=dumps(payload), headers=self.headers)
|
|
if result.status_code != 200:
|
|
raise requests.exceptions.HTTPError(result.text)
|
|
return result.json()
|
|
|
|
def post_shipment(self, request_body):
|
|
return self.call('POST', '/Shipment', request_body)
|
|
|
|
def delete_shipment(self, request_body):
|
|
return self.call('DELETE', '/Shipment', request_body)
|
|
|
|
def get_rates_and_transit_time(self, request_body):
|
|
return self.call('POST', '/RatesAndTransitTimes', request_body)
|