Spaces:
Runtime error
Runtime error
import requests | |
import base64 | |
from Crypto.Cipher import AES | |
from Crypto.Util.Padding import unpad, pad | |
from datetime import datetime, timedelta | |
import json | |
from ..utils import dev_url | |
JWT_SECRET_KEY = "super-secret-key" | |
def encrypt(raw): | |
try: | |
raw = str(raw) | |
raw = pad(raw.encode(), 32) | |
cipher = AES.new(JWT_SECRET_KEY.encode("utf-8"), AES.MODE_ECB) | |
return base64.b64encode(cipher.encrypt(raw)) | |
except Exception as e: | |
print(e) | |
return None | |
def get_date_range(period): | |
today = datetime.now() | |
if period == "week": | |
start_date = today - timedelta(days=7) | |
elif period == "month": | |
start_date = today - timedelta(days=30) | |
elif period == "six months": | |
start_date = today - timedelta(days=180) | |
elif period == "whole": | |
start_date = datetime(1970, 1, 1) | |
elif period == "yesterday": | |
start_date = today - timedelta(days=1) | |
end_date = start_date | |
elif period == "today": | |
start_date = today | |
end_date = start_date | |
else: | |
raise ValueError("Invalid period type. Choose from 'week', 'month', 'six months', 'whole', 'yesterday', or 'today'.") | |
end_date = today if period not in ["yesterday", "today"] else end_date | |
return start_date, end_date | |
def fetch_response(store_id, brand_id, period=None, start_date=None, end_date=None, hours=None, minutes=None, seconds=None): | |
if period: | |
start_date, end_date = get_date_range(period) | |
elif not start_date or not end_date: | |
raise ValueError("Start date and end date must be provided if period is not specified.") | |
if start_date == end_date: | |
if hours is not None and minutes is not None and seconds is not None: | |
start_date = start_date.replace(hour=hours, minute=minutes, second=seconds) | |
end_date = end_date.replace(hour=hours, minute=minutes, second=seconds) | |
else: | |
start_date = start_date.replace(hour=0, minute=0, second=0) | |
end_date = end_date.replace(hour=23, minute=59, second=59) | |
start_date_str = start_date.strftime("%Y-%m-%d %H:%M:%S") | |
end_date_str = end_date.strftime("%Y-%m-%d %H:%M:%S") | |
encrypted = encrypt(brand_id) | |
if encrypted is None: | |
print("Error in encryption") | |
return | |
url = f"https://dev.sahlhub.com/api/v1/order/archiveOrder?storeId={store_id}&startDate={start_date_str}&enddate={end_date_str}" | |
auth_token = "SAHL_COOKIE_KEY" | |
headers = { | |
"Content-Type": "application/json", | |
"userToken": auth_token, | |
"brandid": encrypted.decode("utf-8", "ignore"), | |
"origin": "https://pos-dev.sahlhub.com", | |
} | |
response = requests.request("GET", url, headers=headers) | |
if response.status_code == 200: | |
data = response.json() | |
return data | |
else: | |
print(f"Failed to fetch data. Status code: {response.status_code}") | |
print(response.text) | |
return None |