Spaces:
Runtime error
Runtime error
import logging | |
import requests | |
from typing import Union | |
import pandas as pd | |
import streamlit as st | |
logging.basicConfig(level=logging.INFO) | |
class DataRetriever: | |
"""Class to encapsulate data retrieval and processing operations.""" | |
def set_limit(period: str) -> int: | |
""" | |
Sets the limit based on the period. | |
:param period: The time period for which to set the limit. | |
:return: The calculated limit based on the input period. | |
""" | |
if period == "4HRS": | |
return ((24 // 4) * 30) + (24 * 7) # one month + one week more | |
elif period == "12HRS": | |
return ((24 // 12) * 90) + (24 * 7) # three months + one week more | |
else: | |
return (24 * 7) * 2 # one week + one week more | |
def retrieve_data(url: str, headers: dict) -> Union[dict, list, None]: | |
""" | |
Retrieves data from the API. | |
:param url: The API URL from which to retrieve data. | |
:param headers: The headers to include in the API request. | |
:return: A data frame with the retrieved data, or None if an error occurred. | |
""" | |
try: | |
response = requests.get(url, headers=headers) | |
response.raise_for_status() | |
except requests.exceptions.HTTPError as http_err: | |
logging.error(f"HTTP error occurred: {http_err}") | |
st.write(f"HTTP error occurred: {http_err}") | |
return None | |
except requests.exceptions.ConnectionError as conn_err: | |
logging.error(f"Connection error occurred: {conn_err}") | |
st.write(f"Connection error occurred: {conn_err}") | |
return None | |
except requests.exceptions.RequestException as req_err: | |
logging.error(f"Error fetching data: {req_err}") | |
st.write(f"Error fetching data: {req_err}") | |
return None | |
data = response.json() | |
return data | |