Module streamtape.BaseConfig
Expand source code
from datetime import datetime
from typing import Optional
from urllib.parse import urlencode
import requests
from streamtape.ApiResponse import ApiResponse
class BaseConfig:
url: str = 'https://api.streamtape.com'
api_user: Optional[str] = None
api_password: Optional[str] = None
def __init__(self, user: str, password: str):
"""
Initializes an instance of the class with the provided user and password.
Args:
- user (str): The username for the API authentication.
- password (str): The password for the API authentication.
Returns:
- None
"""
self.api_user = user
self.api_password = password
def set_api_url(self, url: str):
"""
Sets the API URL for the object.
Parameters:
- self: The object itself.
- url (str): The URL to be set as the API URL.
Returns:
- None
Example:
>>> obj = MyClass()
>>> obj.set_api_url("https://api.example.com")
"""
self.url = url
def url_query(self, parameter: str, query: dict = {}, use_login: bool = True) -> str:
"""
Constructs a URL query string for making API requests.
Args:
- self (object): The instance of the class.
- parameter (str): The parameter to be appended to the base URL.
- query (dict, optional): Additional query parameters to be included in the URL. Defaults to an empty dictionary.
- use_login (bool, optional): Flag indicating whether to include login credentials in the query parameters. Defaults to True.
Returns:
- str: The constructed URL query string.
Example:
>>> obj = ClassName()
>>> obj.url_query("endpoint", {"param1": "value1", "param2": "value2"}, False)
'https://example.com/endpoint?param1=value1¶m2=value2'
"""
api_url = f"{self.url}/{parameter}"
api_query = {"login": self.api_user, "key": self.api_password} if use_login else {}
api_query = {**api_query, **query}
return f"{api_url}?{urlencode(api_query)}"
@staticmethod
def send_request(url: str, type_request: str = 'GET', data: Optional[dict] = None, parameters: Optional[dict] = None, files: Optional[dict] = None) -> ApiResponse:
"""
Sends a HTTP request to the specified URL using the specified request type.
Args:
- url (str): The URL to send the request to.
- type_request (str, optional): The type of request to send. Defaults to 'GET'.
- data (dict, optional): The data to send with the request. Defaults to None.
- parameters (dict, optional): The parameters to include in the request. Defaults to None.
- files (dict, optional): The files to include in the request. Defaults to None.
Returns:
- ApiResponse: The response from the server.
Raises:
None
Examples:
>>> response = send_request('https://api.example.com/users', type_request='GET')
{
"status": <status-code>,
"msg": "<informational message. might vary, use the status code in your code!>",
"result": <result of the request. varies depending on the request>
}
"""
s = requests.Session()
response: Optional[ApiResponse] = None
if type_request.upper() == 'GET':
response = s.get(url, data=data, params=parameters, files=files).json()
elif type_request.upper() == 'POST':
response = s.post(url, data=data, params=parameters, files=files).json()
return response
@staticmethod
def str_to_datetime(date_string: str, format_string: str = '%y-%m-%d %H:%M:%S'):
"""
Converts a string representation of a date and time to a datetime object.
Args:
- date_string (str): The string representation of the date and time.
- format_string (str, optional): The format string specifying the expected format of the date and time string.
Defaults to '%y-%m-%d %H:%M:%S'.
Returns:
- datetime: A datetime object representing the parsed date and time.
Raises:
- ValueError: If the date_string does not match the format_string.
Examples:
>>> str_to_datetime('2022-01-01 12:00:00')
datetime.datetime(2022, 1, 1, 12, 0)
>>> str_to_datetime('01-01-2022 12:00:00', '%d-%m-%Y %H:%M:%S')
datetime.datetime(2022, 1, 1, 12, 0)
Note:
- The format_string follows the same conventions as the strftime() method of datetime objects.
- If the date_string does not match the format_string, a ValueError is raised.
"""
return datetime.strptime(date_string, format_string)
Classes
class BaseConfig (user: str, password: str)
-
Initializes an instance of the class with the provided user and password.
Args
- user (str): The username for the API authentication.
- password (str): The password for the API authentication.
Returns
- None
Expand source code
class BaseConfig: url: str = 'https://api.streamtape.com' api_user: Optional[str] = None api_password: Optional[str] = None def __init__(self, user: str, password: str): """ Initializes an instance of the class with the provided user and password. Args: - user (str): The username for the API authentication. - password (str): The password for the API authentication. Returns: - None """ self.api_user = user self.api_password = password def set_api_url(self, url: str): """ Sets the API URL for the object. Parameters: - self: The object itself. - url (str): The URL to be set as the API URL. Returns: - None Example: >>> obj = MyClass() >>> obj.set_api_url("https://api.example.com") """ self.url = url def url_query(self, parameter: str, query: dict = {}, use_login: bool = True) -> str: """ Constructs a URL query string for making API requests. Args: - self (object): The instance of the class. - parameter (str): The parameter to be appended to the base URL. - query (dict, optional): Additional query parameters to be included in the URL. Defaults to an empty dictionary. - use_login (bool, optional): Flag indicating whether to include login credentials in the query parameters. Defaults to True. Returns: - str: The constructed URL query string. Example: >>> obj = ClassName() >>> obj.url_query("endpoint", {"param1": "value1", "param2": "value2"}, False) 'https://example.com/endpoint?param1=value1¶m2=value2' """ api_url = f"{self.url}/{parameter}" api_query = {"login": self.api_user, "key": self.api_password} if use_login else {} api_query = {**api_query, **query} return f"{api_url}?{urlencode(api_query)}" @staticmethod def send_request(url: str, type_request: str = 'GET', data: Optional[dict] = None, parameters: Optional[dict] = None, files: Optional[dict] = None) -> ApiResponse: """ Sends a HTTP request to the specified URL using the specified request type. Args: - url (str): The URL to send the request to. - type_request (str, optional): The type of request to send. Defaults to 'GET'. - data (dict, optional): The data to send with the request. Defaults to None. - parameters (dict, optional): The parameters to include in the request. Defaults to None. - files (dict, optional): The files to include in the request. Defaults to None. Returns: - ApiResponse: The response from the server. Raises: None Examples: >>> response = send_request('https://api.example.com/users', type_request='GET') { "status": <status-code>, "msg": "<informational message. might vary, use the status code in your code!>", "result": <result of the request. varies depending on the request> } """ s = requests.Session() response: Optional[ApiResponse] = None if type_request.upper() == 'GET': response = s.get(url, data=data, params=parameters, files=files).json() elif type_request.upper() == 'POST': response = s.post(url, data=data, params=parameters, files=files).json() return response @staticmethod def str_to_datetime(date_string: str, format_string: str = '%y-%m-%d %H:%M:%S'): """ Converts a string representation of a date and time to a datetime object. Args: - date_string (str): The string representation of the date and time. - format_string (str, optional): The format string specifying the expected format of the date and time string. Defaults to '%y-%m-%d %H:%M:%S'. Returns: - datetime: A datetime object representing the parsed date and time. Raises: - ValueError: If the date_string does not match the format_string. Examples: >>> str_to_datetime('2022-01-01 12:00:00') datetime.datetime(2022, 1, 1, 12, 0) >>> str_to_datetime('01-01-2022 12:00:00', '%d-%m-%Y %H:%M:%S') datetime.datetime(2022, 1, 1, 12, 0) Note: - The format_string follows the same conventions as the strftime() method of datetime objects. - If the date_string does not match the format_string, a ValueError is raised. """ return datetime.strptime(date_string, format_string)
Subclasses
Class variables
var api_password : Optional[str]
var api_user : Optional[str]
var url : str
Static methods
def send_request(url: str, type_request: str = 'GET', data: Optional[dict] = None, parameters: Optional[dict] = None, files: Optional[dict] = None) ‑> ApiResponse
-
Sends a HTTP request to the specified URL using the specified request type.
Args
- url (str): The URL to send the request to.
- type_request (str, optional): The type of request to send. Defaults to 'GET'.
- data (dict, optional): The data to send with the request. Defaults to None.
- parameters (dict, optional): The parameters to include in the request. Defaults to None.
- files (dict, optional): The files to include in the request. Defaults to None.
Returns
- ApiResponse: The response from the server.
Raises
None
Examples
>>> response = send_request('https://api.example.com/users', type_request='GET') { "status": <status-code>, "msg": "<informational message. might vary, use the status code in your code!>", "result": <result of the request. varies depending on the request> }
Expand source code
@staticmethod def send_request(url: str, type_request: str = 'GET', data: Optional[dict] = None, parameters: Optional[dict] = None, files: Optional[dict] = None) -> ApiResponse: """ Sends a HTTP request to the specified URL using the specified request type. Args: - url (str): The URL to send the request to. - type_request (str, optional): The type of request to send. Defaults to 'GET'. - data (dict, optional): The data to send with the request. Defaults to None. - parameters (dict, optional): The parameters to include in the request. Defaults to None. - files (dict, optional): The files to include in the request. Defaults to None. Returns: - ApiResponse: The response from the server. Raises: None Examples: >>> response = send_request('https://api.example.com/users', type_request='GET') { "status": <status-code>, "msg": "<informational message. might vary, use the status code in your code!>", "result": <result of the request. varies depending on the request> } """ s = requests.Session() response: Optional[ApiResponse] = None if type_request.upper() == 'GET': response = s.get(url, data=data, params=parameters, files=files).json() elif type_request.upper() == 'POST': response = s.post(url, data=data, params=parameters, files=files).json() return response
def str_to_datetime(date_string: str, format_string: str = '%y-%m-%d %H:%M:%S')
-
Converts a string representation of a date and time to a datetime object.
Args
- date_string (str): The string representation of the date and time.
- format_string (str, optional): The format string specifying the expected format of the date and time string. Defaults to '%y-%m-%d %H:%M:%S'.
Returns
- datetime: A datetime object representing the parsed date and time.
Raises
- ValueError: If the date_string does not match the format_string.
Examples
>>> str_to_datetime('2022-01-01 12:00:00') datetime.datetime(2022, 1, 1, 12, 0)
>>> str_to_datetime('01-01-2022 12:00:00', '%d-%m-%Y %H:%M:%S') datetime.datetime(2022, 1, 1, 12, 0)
Note
- The format_string follows the same conventions as the strftime() method of datetime objects.
- If the date_string does not match the format_string, a ValueError is raised.
Expand source code
@staticmethod def str_to_datetime(date_string: str, format_string: str = '%y-%m-%d %H:%M:%S'): """ Converts a string representation of a date and time to a datetime object. Args: - date_string (str): The string representation of the date and time. - format_string (str, optional): The format string specifying the expected format of the date and time string. Defaults to '%y-%m-%d %H:%M:%S'. Returns: - datetime: A datetime object representing the parsed date and time. Raises: - ValueError: If the date_string does not match the format_string. Examples: >>> str_to_datetime('2022-01-01 12:00:00') datetime.datetime(2022, 1, 1, 12, 0) >>> str_to_datetime('01-01-2022 12:00:00', '%d-%m-%Y %H:%M:%S') datetime.datetime(2022, 1, 1, 12, 0) Note: - The format_string follows the same conventions as the strftime() method of datetime objects. - If the date_string does not match the format_string, a ValueError is raised. """ return datetime.strptime(date_string, format_string)
Methods
def set_api_url(self, url: str)
-
Sets the API URL for the object.
Parameters: - self: The object itself. - url (str): The URL to be set as the API URL.
Returns: - None
Example:
>>> obj = MyClass() >>> obj.set_api_url("https://api.example.com")
Expand source code
def set_api_url(self, url: str): """ Sets the API URL for the object. Parameters: - self: The object itself. - url (str): The URL to be set as the API URL. Returns: - None Example: >>> obj = MyClass() >>> obj.set_api_url("https://api.example.com") """ self.url = url
def url_query(self, parameter: str, query: dict = {}, use_login: bool = True) ‑> str
-
Constructs a URL query string for making API requests.
Args
- self (object): The instance of the class.
- parameter (str): The parameter to be appended to the base URL.
- query (dict, optional): Additional query parameters to be included in the URL. Defaults to an empty dictionary.
- use_login (bool, optional): Flag indicating whether to include login credentials in the query parameters. Defaults to True.
Returns
- str: The constructed URL query string.
Example
>>> obj = ClassName() >>> obj.url_query("endpoint", {"param1": "value1", "param2": "value2"}, False) 'https://example.com/endpoint?param1=value1¶m2=value2'
Expand source code
def url_query(self, parameter: str, query: dict = {}, use_login: bool = True) -> str: """ Constructs a URL query string for making API requests. Args: - self (object): The instance of the class. - parameter (str): The parameter to be appended to the base URL. - query (dict, optional): Additional query parameters to be included in the URL. Defaults to an empty dictionary. - use_login (bool, optional): Flag indicating whether to include login credentials in the query parameters. Defaults to True. Returns: - str: The constructed URL query string. Example: >>> obj = ClassName() >>> obj.url_query("endpoint", {"param1": "value1", "param2": "value2"}, False) 'https://example.com/endpoint?param1=value1¶m2=value2' """ api_url = f"{self.url}/{parameter}" api_query = {"login": self.api_user, "key": self.api_password} if use_login else {} api_query = {**api_query, **query} return f"{api_url}?{urlencode(api_query)}"