backend/scan/utils.py

83 lines
1.4 KiB
Python
Raw Permalink Normal View History

import requests
import logging
from rest_framework.response import Response
from .constants import *
def get_new_token(url):
"""Function to get a new token."""
payload = {"UserName": USERNAME, "Password": PASSWORD}
try:
response = requests.post(url, json=payload)
response_data = response.json()
if response.status_code == 200 and response_data.get("IsSuccess"):
return response_data["Value"]["Token"]
else:
return None
except requests.RequestException as e:
logging.error(f"Network error while getting token: {str(e)}")
return None
def request_to_api(url, token, payload=None, timeout=10):
"""General function to make API requests."""
if payload is None:
payload = {}
headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
try:
response = requests.post(url, json=payload, headers=headers, timeout=timeout)
if response.ok:
return response.json()
else:
logging.error(f"Error from API ({url}): {response.status_code} - {response.text}")
return None
except requests.Timeout:
logging.error(f"Timeout while requesting {url}")
return None
except requests.RequestException as e:
logging.error(f"Request error to {url}: {str(e)}")
return None
def create_response(status, message=None, data=None, status_code=200):
"""Function to create consistent API responses."""
return Response({
"status": status,
"message": message,
"data": data
}, status=status_code)