Add API and get_token for testing API

This commit is contained in:
Enrique Barcelli 2023-06-24 15:39:57 +08:00
parent eb2968b777
commit d17f28ccf2
Signed by: kikobar
GPG key ID: 006C13A68E25D3B7
3 changed files with 89 additions and 2 deletions

69
api.py Normal file
View file

@ -0,0 +1,69 @@
import requests
from requests_oauthlib import OAuth2Session
import json
import sys
from config import *
from cachehandler import CacheHandler
from authhandler import AuthHandler
class OpenbravoToBanqupAPI:
def __init__(self, clientId, clientSecret, demo=False):
self.clientId = clientId
self.clientSecret = clientSecret
self.demo = demo
self.headers = {
'Accept' : 'application/json',
'Content-Type' : 'application/json',
}
self.baseUrl = bq_base_url
self.cacheHandler = CacheHandler()
self.authHandler = AuthHandler(self, self.clientId, self.clientSecret)
def doRequest(self, method, url, data=None, headers=None, files=None):
if headers:
mergedHeaders = self.headers
mergedHeaders.update(headers)
headers = mergedHeaders
else: headers = self.headers
reqUrl = '{base}/{url}'.format(base=self.baseUrl, url=url)
if method == 'GET':
response = requests.get(reqUrl, params=data, headers=headers)
elif method == 'POST':
if files: response = requests.post(reqUrl, data=json.dumps(data), files=files, headers=headers)
else: response = requests.post(reqUrl, data=json.dumps(data), headers=headers)
elif method == 'PUT':
response = requests.put(reqUrl, data=json.dumps(data), headers=headers)
elif method == 'DELETE':
response = requests.delete(reqUrl, params=json.dumps(data), headers=headers)
return response
def request(self, method, url, data=None, headers=None, files=None):
self.authHandler.checkHeaderTokens()
response = self.doRequest(method, url, data, headers, files)
if 'json' in response.headers['Content-Type']:
respContent = response.json()
elif 'pdf' in response.headers['Content-Type']:
respContent = response.content
return response.status_code, response.headers, respContent
def get(self, url, data=None, headers=None):
status, headers, response = self.request('GET', url, data, headers)
return status, headers, response
def post(self, url, data=None, headers=None, files=None):
status, headers, response = self.request('POST', url, data, headers, files)
return status, headers, response
def put(self, url, data=None, headers=None):
status, headers, response = self.request('PUT', url, data, headers)
return status, headers, response
def delete(self, url, data=None, headers=None):
status, headers, response = self.request('DELETE', url, data, headers)
return status, headers, response

View file

@ -16,9 +16,10 @@ class AuthHandler:
self.state = None self.state = None
self.token = None self.token = None
def getAuthURL(self, redirectUrl): def getAuthURL(self, redirectUri):
self.redirectUrl = redirectUrl self.redirectUri = redirectUri
oauth = OAuth2Session(self.clientId, redirect_uri=self.redirectUri, scope='openid') oauth = OAuth2Session(self.clientId, redirect_uri=self.redirectUri, scope='openid')
authorizationUrl, self.state = oauth.authorization_url(self.authUrl)
return authorizationUrl return authorizationUrl
def retrieveToken(self, response, state=None, redirectUri=None): def retrieveToken(self, response, state=None, redirectUri=None):

17
get_token.py Normal file
View file

@ -0,0 +1,17 @@
import requests
from requests_oauthlib import OAuth2Session
import json
import sys
import webbrowser
from config import *
from cachehandler import CacheHandler
from authhandler import AuthHandler
from api import OpenbravoToBanqupAPI
api = OpenbravoToBanqupAPI(bq_client_id,bq_client_secret)
authUrl = api.authHandler.getAuthURL(bq_redirect_uri)
print(authUrl)
webbrowser.open(authUrl)
response = input('paste response: ')
token = api.authHandler.retrieveToken(response, redirectUri=bq_redirect_uri)
print(token)