2021-12-05 22:41:27 +03:00

51 lines
1.6 KiB
Python

import hashlib
import base64
import requests
import config
def get_tokens_request(code, code_verifier) -> requests.Response:
"""
Performs initial requesting access and refresh tokens
:param code:
:param code_verifier:
:return:
"""
token_request: requests.Response = requests.post(
url=config.TOKEN_URL,
headers={
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': config.PROPER_USER_AGENT
},
data=f'redirect_uri={config.REDIRECT_URL}&'
f'code={code}&'
f'grant_type=authorization_code&'
f'code_verifier={code_verifier}&'
f'client_id={config.CLIENT_ID}')
return token_request
def get_nickname(access_token: str) -> str:
return requests.get(
url='https://companion.orerve.net/profile',
headers={'Authorization': f'Bearer {access_token}',
'User-Agent': config.PROPER_USER_AGENT}).json()["commander"]["name"]
def refresh_request(refresh_token: str) -> requests.Response:
return requests.post(
url=config.TOKEN_URL,
headers={'Content-Type': 'application/x-www-form-urlencoded'},
data=f'grant_type=refresh_token&client_id={config.CLIENT_ID}&refresh_token={refresh_token}')
def generate_challenge(_verifier: bytes) -> str:
"""
It takes code verifier and return code challenge
:param _verifier:
:return:
"""
return base64.urlsafe_b64encode(hashlib.sha256(_verifier).digest())[:-1].decode('utf-8')