Module prefeitura_rio.core

Expand source code
# -*- coding: utf-8 -*-
from os import getenv
from typing import Union

from loguru import logger


def getenv_or_action(key: str, default: str = None, action: str = "raise") -> Union[str, None]:
    """
    Gets an environment variable or executes an action.

    Args:
        key (str): The environment variable key.
        default (str, optional): The default value. Defaults to `None`.
        action (str, optional): The action to execute. Must be one of `'raise'`,
            `'warn'` or `'ignore'`. Defaults to `'raise'`.

    Returns:
        Union[str, None]: The environment variable value or the default value.
    """
    if action not in ("raise", "warn", "ignore"):
        raise ValueError(f"Invalid action '{action}'. Must be one of 'raise', 'warn' or 'ignore'.")
    value = getenv(key, default)
    if value is None:
        if action == "raise":
            raise ValueError(f"Environment variable '{key}' not found.")
        elif action == "warn":
            logger.warning(f"Environment variable '{key}' not found.")
    return value


class Settings:
    __slots__ = ()

    @property
    def SGRC_URL(self) -> str:
        url = getenv_or_action("SGRC_URL", action="raise")
        if url.endswith("/"):
            url = url[:-1]
        return url

    @property
    def SGRC_URL_NEW_TICKET(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/NovoChamado"

    @property
    def SGRC_URL_GET_PROTOCOLS(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/RetornaProtocolos"

    @property
    def SGRC_URL_GET_PROTOCOL_TICKETS(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/RetornaChamadosProtocolo"

    @property
    def SGRC_URL_GET_TICKET_DETAILS(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/RetornaDetalhesChamado"

    @property
    def SGRC_URL_GET_PROTOCOL_TICKETS_DETAILS(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/RetornaChamadosDetalhadosProtocolo"

    @property
    def SGRC_URL_VERSION(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/VersaoDoServico"

    @property
    def SGRC_AUTHORIZATION_HEADER(self) -> str:
        return getenv_or_action("SGRC_AUTHORIZATION_HEADER", action="raise")

    @property
    def SGRC_BODY_TOKEN(self) -> str:
        return getenv_or_action("SGRC_BODY_TOKEN", action="raise")


settings = Settings()

Functions

def getenv_or_action(key: str, default: str = None, action: str = 'raise') ‑> Optional[str]

Gets an environment variable or executes an action.

Args

key : str
The environment variable key.
default : str, optional
The default value. Defaults to None.
action : str, optional
The action to execute. Must be one of 'raise', 'warn' or 'ignore'. Defaults to 'raise'.

Returns

Union[str, None]
The environment variable value or the default value.
Expand source code
def getenv_or_action(key: str, default: str = None, action: str = "raise") -> Union[str, None]:
    """
    Gets an environment variable or executes an action.

    Args:
        key (str): The environment variable key.
        default (str, optional): The default value. Defaults to `None`.
        action (str, optional): The action to execute. Must be one of `'raise'`,
            `'warn'` or `'ignore'`. Defaults to `'raise'`.

    Returns:
        Union[str, None]: The environment variable value or the default value.
    """
    if action not in ("raise", "warn", "ignore"):
        raise ValueError(f"Invalid action '{action}'. Must be one of 'raise', 'warn' or 'ignore'.")
    value = getenv(key, default)
    if value is None:
        if action == "raise":
            raise ValueError(f"Environment variable '{key}' not found.")
        elif action == "warn":
            logger.warning(f"Environment variable '{key}' not found.")
    return value

Classes

class Settings
Expand source code
class Settings:
    __slots__ = ()

    @property
    def SGRC_URL(self) -> str:
        url = getenv_or_action("SGRC_URL", action="raise")
        if url.endswith("/"):
            url = url[:-1]
        return url

    @property
    def SGRC_URL_NEW_TICKET(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/NovoChamado"

    @property
    def SGRC_URL_GET_PROTOCOLS(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/RetornaProtocolos"

    @property
    def SGRC_URL_GET_PROTOCOL_TICKETS(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/RetornaChamadosProtocolo"

    @property
    def SGRC_URL_GET_TICKET_DETAILS(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/RetornaDetalhesChamado"

    @property
    def SGRC_URL_GET_PROTOCOL_TICKETS_DETAILS(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/RetornaChamadosDetalhadosProtocolo"

    @property
    def SGRC_URL_VERSION(self) -> str:
        return self.SGRC_URL + "/api/WSPortalWeb/VersaoDoServico"

    @property
    def SGRC_AUTHORIZATION_HEADER(self) -> str:
        return getenv_or_action("SGRC_AUTHORIZATION_HEADER", action="raise")

    @property
    def SGRC_BODY_TOKEN(self) -> str:
        return getenv_or_action("SGRC_BODY_TOKEN", action="raise")

Instance variables

var SGRC_AUTHORIZATION_HEADER : str
Expand source code
@property
def SGRC_AUTHORIZATION_HEADER(self) -> str:
    return getenv_or_action("SGRC_AUTHORIZATION_HEADER", action="raise")
var SGRC_BODY_TOKEN : str
Expand source code
@property
def SGRC_BODY_TOKEN(self) -> str:
    return getenv_or_action("SGRC_BODY_TOKEN", action="raise")
var SGRC_URL : str
Expand source code
@property
def SGRC_URL(self) -> str:
    url = getenv_or_action("SGRC_URL", action="raise")
    if url.endswith("/"):
        url = url[:-1]
    return url
var SGRC_URL_GET_PROTOCOLS : str
Expand source code
@property
def SGRC_URL_GET_PROTOCOLS(self) -> str:
    return self.SGRC_URL + "/api/WSPortalWeb/RetornaProtocolos"
var SGRC_URL_GET_PROTOCOL_TICKETS : str
Expand source code
@property
def SGRC_URL_GET_PROTOCOL_TICKETS(self) -> str:
    return self.SGRC_URL + "/api/WSPortalWeb/RetornaChamadosProtocolo"
var SGRC_URL_GET_PROTOCOL_TICKETS_DETAILS : str
Expand source code
@property
def SGRC_URL_GET_PROTOCOL_TICKETS_DETAILS(self) -> str:
    return self.SGRC_URL + "/api/WSPortalWeb/RetornaChamadosDetalhadosProtocolo"
var SGRC_URL_GET_TICKET_DETAILS : str
Expand source code
@property
def SGRC_URL_GET_TICKET_DETAILS(self) -> str:
    return self.SGRC_URL + "/api/WSPortalWeb/RetornaDetalhesChamado"
var SGRC_URL_NEW_TICKET : str
Expand source code
@property
def SGRC_URL_NEW_TICKET(self) -> str:
    return self.SGRC_URL + "/api/WSPortalWeb/NovoChamado"
var SGRC_URL_VERSION : str
Expand source code
@property
def SGRC_URL_VERSION(self) -> str:
    return self.SGRC_URL + "/api/WSPortalWeb/VersaoDoServico"