Added token.py for calls to reset password.
This commit is contained in:
parent
7fb9d64251
commit
b48ba14f6c
|
|
@ -0,0 +1,175 @@
|
||||||
|
"""
|
||||||
|
Token Class object
|
||||||
|
"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
class Token():
|
||||||
|
"""Token class"""
|
||||||
|
|
||||||
|
def __init__(self, base_url, jwt):
|
||||||
|
"""
|
||||||
|
__init__ Init Token
|
||||||
|
|
||||||
|
:param base_url: Base URL for Token API
|
||||||
|
:param jwt: JWT Authentication for Token API
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.base_url = base_url
|
||||||
|
self.jwt = jwt
|
||||||
|
|
||||||
|
|
||||||
|
def get(self, campaign_key):
|
||||||
|
"""
|
||||||
|
get Get the campaign
|
||||||
|
|
||||||
|
:param campaign_key: The Campaign key to get with API
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Set the headers for the request
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Accept': 'application/json',
|
||||||
|
'Authorization': f'Bearer {self.jwt}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run the GET
|
||||||
|
response = requests.get(
|
||||||
|
f'{self.base_url}/api/v1/campaigns/{campaign_key}',
|
||||||
|
headers=headers,
|
||||||
|
timeout=300
|
||||||
|
)
|
||||||
|
|
||||||
|
# Good response. Return Campaign
|
||||||
|
if response.ok:
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
# Log error and retunr null
|
||||||
|
logging.error("[AFCAMPAIGN GET] [%s]", response.text)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def patch(self, campaign_key, patch_data):
|
||||||
|
"""
|
||||||
|
patch Path the Campaign
|
||||||
|
|
||||||
|
:param campaign_key: The Campaign key to update with API
|
||||||
|
:param patch_data: The data to update the Campaign
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Set the headers for the request
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Accept': 'application/json',
|
||||||
|
'Authorization': f'Bearer {self.jwt}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the key to the patch data
|
||||||
|
patch_data['key'] = campaign_key
|
||||||
|
|
||||||
|
# Run the GET
|
||||||
|
response = requests.patch(
|
||||||
|
f'{self.base_url}/api/v1/campaigns/{campaign_key}',
|
||||||
|
headers=headers,
|
||||||
|
timeout=300,
|
||||||
|
json=patch_data
|
||||||
|
)
|
||||||
|
|
||||||
|
# Good response. Return Campaign
|
||||||
|
if response.ok:
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
# Log error and retunr null
|
||||||
|
logging.error("[AFCAMPAIGN UPDATE] [%s]", response.text)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def password_reset_trigger(self, username=None, email=None):
|
||||||
|
"""
|
||||||
|
password_reset_trigger Send a password reset email to the username account provided
|
||||||
|
|
||||||
|
:param username: The username of the account to be affected
|
||||||
|
:param email: The email of the account to be affected
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Set the headers for the request
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Accept': 'application/json',
|
||||||
|
#'Authorization': f'Bearer {self.jwt}'
|
||||||
|
}
|
||||||
|
|
||||||
|
print(f"token::password_reset_trigger(): username = {username} email = {email}")
|
||||||
|
|
||||||
|
# Set the patch data
|
||||||
|
patch_data = {}
|
||||||
|
if username not in (None, ""):
|
||||||
|
patch_data['user_name'] = username
|
||||||
|
patch_data['email'] = None
|
||||||
|
elif email not in (None, ""):
|
||||||
|
patch_data['user_name'] = None
|
||||||
|
patch_data['email'] = email
|
||||||
|
|
||||||
|
if patch_data['user_name'] in (None, '') and patch_data['email'] in (None, ''):
|
||||||
|
print(f"token::password_reset_trigger(): Error: 'user_name' and 'email' values are both empty. patch_data = {patch_data}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
print(f'{self.base_url}/api/v1/token/generate')
|
||||||
|
print(f'patch_data = {patch_data}')
|
||||||
|
|
||||||
|
# Run the PATCH
|
||||||
|
response = requests.patch(
|
||||||
|
f'{self.base_url}/api/v1/token/generate',
|
||||||
|
headers=headers,
|
||||||
|
timeout=300,
|
||||||
|
json=patch_data
|
||||||
|
)
|
||||||
|
|
||||||
|
if response.ok:
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
logging.error("[PASSWORD RESET TRIGGER] [%s]", response.text)
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def password_reset(self, token_value=None, password=None, verify=None):
|
||||||
|
"""
|
||||||
|
password_reset Reset password with token value
|
||||||
|
|
||||||
|
:param username: The username of the account to be affected
|
||||||
|
"""
|
||||||
|
|
||||||
|
if token_value in (None, ""):
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Set the headers for the request
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Accept': 'application/json',
|
||||||
|
#'Authorization': f'Bearer {self.jwt}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the key to the patch data
|
||||||
|
patch_data = {
|
||||||
|
'user_token': token_value,
|
||||||
|
'password': password,
|
||||||
|
'password_verification': verify
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run the PATCH
|
||||||
|
response = requests.patch(
|
||||||
|
f'{self.base_url}/api/v1/token/password/{token_value}',
|
||||||
|
headers=headers,
|
||||||
|
timeout=300,
|
||||||
|
json=patch_data
|
||||||
|
)
|
||||||
|
|
||||||
|
if response.ok:
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
logging.error("[PASSWORD RESET] [%s]", response.text)
|
||||||
|
|
||||||
|
return None
|
||||||
Loading…
Reference in New Issue