Source code for sagace.core.token_storage
"""
--------------------------------------------------------------------------------------------------------------------
Descrição:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Este módulo define uma estrutura para gerenciamento de tokens de autenticação dentro do sistema SAGACE.
A interface `TokenStorage` estabelece um contrato para armazenamento e recuperação de tokens de forma desacoplada,
permitindo diferentes implementações conforme a necessidade do sistema.
Principais funcionalidades:
- Definição de uma interface para armazenamento seguro de tokens de autenticação.
- Permite a implementação de diferentes estratégias de persistência (memória, arquivos, banco de dados, etc.).
Princípios de Design Aplicados:
- **Single Responsibility Principle (SRP - SOLID)**: Cada classe tem uma única responsabilidade clara.
- **Open/Closed Principle (OCP - SOLID)**: A interface `TokenStorage` pode ser estendida sem modificar seu código-fonte.
- **Dependency Inversion Principle (DIP - SOLID)**: `TokenStorage` define uma abstração para armazenamento de tokens,
permitindo que implementações concretas sejam facilmente substituídas.
Classes:
- ``TokenStorage``: Interface abstrata para armazenar e recuperar tokens.
Exemplo de uso:
.. code-block:: python
from sagace.core import Token, TokenStorage
class MemoryTokenStorage(TokenStorage):
# Implementação de TokenStorage que armazena o token em memória.
def __init__(self):
self._token = None
def save_token(self, token: Token):
self._token = token
def get_token(self) -> Token:
return self._token
token_storage = MemoryTokenStorage()
token = Token(
base_url="https://api.sagace.online",
access_token="abc123",
application_name="Meu App",
description="Token de acesso para integração."
)
token_storage.save_token(token)
retrieved_token = token_storage.get_token()
print(retrieved_token.get_auth_header())
Autor: Diego Yosiura
Última Atualização: 27/02/2025 16:22
Criado em: 27/02/2025 16:22
Copyright: (c) Ampere Consultoria Ltda
Projeto Original: sagace-v2-package
IDE: PyCharm
"""
from abc import ABC, abstractmethod
from . import Token
[docs]
class TokenStorage(ABC):
"""
Interface para armazenar e recuperar tokens de autenticação.
Essa classe define um contrato para qualquer implementação de armazenamento de tokens,
permitindo diferentes abordagens, como armazenamento em memória, arquivos ou banco de dados.
Princípios aplicados:
- **Dependency Inversion (D - SOLID)**: Permite substituir implementações sem modificar consumidores da interface.
- **Open/Closed (O - SOLID)**: Pode ser estendida sem modificar o código existente.
"""
[docs]
@abstractmethod
def save_token(self, token: Token):
"""
Armazena o token de autenticação.
:param token: Token a ser armazenado.
:type token: Token
"""
pass
[docs]
@abstractmethod
def get_token(self) -> Token:
"""
Recupera o token armazenado.
:return: Instância do token armazenado.
:rtype: Token
"""
pass