mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[MOV] delivery_gso: from hibou-suite-enterprise:11.0
This commit is contained in:
47
delivery_gso/models/requests_gso.py
Normal file
47
delivery_gso/models/requests_gso.py
Normal file
@@ -0,0 +1,47 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user