Module secfsdstools.a_utils.rapiddownloadutils

Utils to help with downloading from the rapid api website

Expand source code
"""
Utils to help with downloading from the rapid api website
"""

from typing import Dict


class RapidUrlBuilder:
    """
    Class which provides simple methods to get the rapid api urls
    """

    RAPID_HOST = "daily-sec-financial-statement-dataset.p.rapidapi.com"
    RAPID_URL = "https://" + RAPID_HOST

    RAPID_CONTENT_URL = RAPID_URL + "/content/"
    RAPID_HEARTBEAT_URL = RAPID_URL + "/heartbeat/"

    def __init__(self, rapid_api_key: str, rapid_plan: str):
        """
        Constructor.
        Args:
            rapid_api_key (str): the rapid_api_key that should be used to make the calls
            rapid_plan (str): the subscription plan for the Daily-Sec-Finaincial-Statement-Dataset
             on rapid.api. either basic or premium
        """
        self.rapid_api_key = rapid_api_key
        self.rapid_plan = rapid_plan

    def get_donwload_url(self, filename: str) -> str:
        """
        creates the download url for the provided daily zipfile name
        Args:
            filename (str): daily zipfile name in the format <YYYYMMDD.zip>

        Returns:
            str, the url

        """
        return RapidUrlBuilder.RAPID_URL + \
               f'/{self.rapid_plan}/day/{filename[:4]}-{filename[4:6]}-{filename[6:8]}/'

    def get_content_url(self) -> str:
        """
        Returns the url to download the json with the content.
        Returns:
            str: url to download the content json file
        """
        return RapidUrlBuilder.RAPID_CONTENT_URL

    def get_heartbeat_url(self) -> str:
        """
        gets the heartbeat url (to check if the rapid api is up and running)
        Returns:
            str: the url to get the heartbeat
        """
        return RapidUrlBuilder.RAPID_HEARTBEAT_URL

    def get_headers(self) -> Dict[str, str]:
        """
        creates a dict with the necessary http headers.

        Returns:
            Dict[str, str]: Dict with the necessary heaers
        """
        return {
            "X-RapidAPI-Key": f"{self.rapid_api_key}",
            "X-RapidAPI-Host": f"{RapidUrlBuilder.RAPID_HOST}"
        }

Classes

class RapidUrlBuilder (rapid_api_key: str, rapid_plan: str)

Class which provides simple methods to get the rapid api urls

Constructor.

Args

rapid_api_key : str
the rapid_api_key that should be used to make the calls
rapid_plan : str
the subscription plan for the Daily-Sec-Finaincial-Statement-Dataset

on rapid.api. either basic or premium

Expand source code
class RapidUrlBuilder:
    """
    Class which provides simple methods to get the rapid api urls
    """

    RAPID_HOST = "daily-sec-financial-statement-dataset.p.rapidapi.com"
    RAPID_URL = "https://" + RAPID_HOST

    RAPID_CONTENT_URL = RAPID_URL + "/content/"
    RAPID_HEARTBEAT_URL = RAPID_URL + "/heartbeat/"

    def __init__(self, rapid_api_key: str, rapid_plan: str):
        """
        Constructor.
        Args:
            rapid_api_key (str): the rapid_api_key that should be used to make the calls
            rapid_plan (str): the subscription plan for the Daily-Sec-Finaincial-Statement-Dataset
             on rapid.api. either basic or premium
        """
        self.rapid_api_key = rapid_api_key
        self.rapid_plan = rapid_plan

    def get_donwload_url(self, filename: str) -> str:
        """
        creates the download url for the provided daily zipfile name
        Args:
            filename (str): daily zipfile name in the format <YYYYMMDD.zip>

        Returns:
            str, the url

        """
        return RapidUrlBuilder.RAPID_URL + \
               f'/{self.rapid_plan}/day/{filename[:4]}-{filename[4:6]}-{filename[6:8]}/'

    def get_content_url(self) -> str:
        """
        Returns the url to download the json with the content.
        Returns:
            str: url to download the content json file
        """
        return RapidUrlBuilder.RAPID_CONTENT_URL

    def get_heartbeat_url(self) -> str:
        """
        gets the heartbeat url (to check if the rapid api is up and running)
        Returns:
            str: the url to get the heartbeat
        """
        return RapidUrlBuilder.RAPID_HEARTBEAT_URL

    def get_headers(self) -> Dict[str, str]:
        """
        creates a dict with the necessary http headers.

        Returns:
            Dict[str, str]: Dict with the necessary heaers
        """
        return {
            "X-RapidAPI-Key": f"{self.rapid_api_key}",
            "X-RapidAPI-Host": f"{RapidUrlBuilder.RAPID_HOST}"
        }

Class variables

var RAPID_CONTENT_URL
var RAPID_HEARTBEAT_URL
var RAPID_HOST
var RAPID_URL

Methods

def get_content_url(self) ‑> str

Returns the url to download the json with the content.

Returns

str
url to download the content json file
Expand source code
def get_content_url(self) -> str:
    """
    Returns the url to download the json with the content.
    Returns:
        str: url to download the content json file
    """
    return RapidUrlBuilder.RAPID_CONTENT_URL
def get_donwload_url(self, filename: str) ‑> str

creates the download url for the provided daily zipfile name

Args

filename : str
daily zipfile name in the format

Returns

str, the url

Expand source code
def get_donwload_url(self, filename: str) -> str:
    """
    creates the download url for the provided daily zipfile name
    Args:
        filename (str): daily zipfile name in the format <YYYYMMDD.zip>

    Returns:
        str, the url

    """
    return RapidUrlBuilder.RAPID_URL + \
           f'/{self.rapid_plan}/day/{filename[:4]}-{filename[4:6]}-{filename[6:8]}/'
def get_headers(self) ‑> Dict[str, str]

creates a dict with the necessary http headers.

Returns

Dict[str, str]
Dict with the necessary heaers
Expand source code
def get_headers(self) -> Dict[str, str]:
    """
    creates a dict with the necessary http headers.

    Returns:
        Dict[str, str]: Dict with the necessary heaers
    """
    return {
        "X-RapidAPI-Key": f"{self.rapid_api_key}",
        "X-RapidAPI-Host": f"{RapidUrlBuilder.RAPID_HOST}"
    }
def get_heartbeat_url(self) ‑> str

gets the heartbeat url (to check if the rapid api is up and running)

Returns

str
the url to get the heartbeat
Expand source code
def get_heartbeat_url(self) -> str:
    """
    gets the heartbeat url (to check if the rapid api is up and running)
    Returns:
        str: the url to get the heartbeat
    """
    return RapidUrlBuilder.RAPID_HEARTBEAT_URL