Documentation ¶
Overview ¶
Package interceptador possuí mecanismos que podem ser encadeados para fazer um tratamento de uma requisição ou resposta. Úteis para tarefas repetitivas, evitando códigos duplicados nos handlers e criando uma camada de abstração.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BD ¶
type BD struct {
// contains filtered or unexported fields
}
BD disponibiliza uma transação do banco de dados para o handler.
func (*BD) After ¶
After responsável por confirmar a transação (commit) ou desfazer as alterções (rollback). A confirmação somente é feita se o handler ou outros interceptadores retornarem um código HTTP de sucesso.
func (*BD) Before ¶
Before inicia uma conexão com o banco de dados caso não existe, e começa uma transação que ficará disponível para o handler. Ao iniciarmos a conexão com o banco de dados neste ponto garantimos que falhas temporárias de comunicação com o banco de dados serão resolvidas assim que o nível de rede voltar ao normal.
type BDCompatível ¶
type BDCompatível struct {
// contains filtered or unexported fields
}
BDCompatível implementa os métodos que serão utilizados pelo handler para acessar a transação criada por este interceptador.
func (*BDCompatível) DefineTx ¶
func (d *BDCompatível) DefineTx(tx *bd.SQLogger)
DefineTx define a transação do banco de dados que será utilizada pelo handler.
func (BDCompatível) Tx ¶
func (d BDCompatível) Tx() *bd.SQLogger
Tx retorna a transação do banco de dados que será utilizada pelo handler.
type CabeçalhoCompatível ¶
CabeçalhoCompatível armazena os dados do cabeçalho a serem retornados em uma resposta HTTP do servidor REST.
func (*CabeçalhoCompatível) AdicionarCabeçalho ¶
func (c *CabeçalhoCompatível) AdicionarCabeçalho(chave, valor string)
AdicionarCabeçalho adiciona um valor no cabeçalho HTTP, podendo ser agregado a algum valor já existente com a mesma chave.
func (*CabeçalhoCompatível) DefinirCabeçalho ¶
func (c *CabeçalhoCompatível) DefinirCabeçalho(chave, valor string)
DefinirCabeçalho define um valor para um cabeçalho HTTP, substituíndo algum valor que já exista.
type Codificador ¶
type Codificador struct {
// contains filtered or unexported fields
}
Codificador popula o objeto da requisição a partir do JSON recebido na rede, também é responsável por criar o JSON a partir do objeto da resposta.
func NovoCodificador ¶
func NovoCodificador(c codificador, tipoConteúdo string) *Codificador
NovoCodificador cria um novo interceptador Codificador.
func (*Codificador) After ¶
func (c *Codificador) After(códigoHTTP int) int
After gera o JSON e cabeçalhos HTTP a partir do objeto de resposta.
func (*Codificador) Before ¶
func (c *Codificador) Before() int
Before traduz do formato JSON para o objeto da requisição no handler.
type EndereçoRemoto ¶
type EndereçoRemoto struct { interceptor.NopInterceptor // contains filtered or unexported fields }
EndereçoRemoto disponibiliza ao handler o endereço do cliente. Possuí a capacidade de tratar endereços enviados via proxy tanto com o cabeçalhos HTTP X-Forwarded-For quanto com o X-Real-IP.
func NovoEndereçoRemoto ¶
func NovoEndereçoRemoto(e endereçoRemoto) *EndereçoRemoto
NovoEndereçoRemoto cria um novo interceptador EndereçoRemoto.
func (*EndereçoRemoto) Before ¶
func (r *EndereçoRemoto) Before() int
Before interpreta a conexão e os cabeçalhos HTTP para identificar o endereço IP do cliente. A prioridade é dada na seguinte ordem: IP da conexão, cabeçalhos HTTP X-Forwarded-For e X-Real-IP. Os cabeçalhos HTTP só serão analisados se o IP da conexão estiver na lista de proxies liberados no arquivo de configuração.
type EndereçoRemotoCompatível ¶
type EndereçoRemotoCompatível struct {
// contains filtered or unexported fields
}
EndereçoRemotoCompatível implementa os métodos que serão utilizados pelo handler para acessar o endereço IP remoto armazenado por este interceptador.
func (*EndereçoRemotoCompatível) DefineEndereçoProxy ¶
func (r *EndereçoRemotoCompatível) DefineEndereçoProxy(ip net.IP)
DefineEndereçoProxy armazena o endereço IP do último proxy. Somente será considerado proxy quando o proxy estiver liberado no arquivo de configuração do servidor REST.
func (*EndereçoRemotoCompatível) DefineEndereçoRemoto ¶
func (r *EndereçoRemotoCompatível) DefineEndereçoRemoto(ip net.IP)
DefineEndereçoRemoto armazena o endereço IP remoto.
func (EndereçoRemotoCompatível) EndereçoProxy ¶
func (r EndereçoRemotoCompatível) EndereçoProxy() net.IP
EndereçoProxy obtém o endereço IP do último proxy. Somente será considerado proxy quando o proxy estiver liberado no arquivo de configuração do servidor REST.
func (EndereçoRemotoCompatível) EndereçoRemoto ¶
func (r EndereçoRemotoCompatível) EndereçoRemoto() net.IP
EndereçoRemoto obtém o endereço IP remoto.
type Log ¶
type Log struct {
// contains filtered or unexported fields
}
Log disponibiliza ao handler uma estrutura de log contextualizada para a requisição, de forma a permitir identificar as mensagens de log de um usuário.
func (Log) Before ¶
Before inicializa uma estrutura de log contextualizada, utilizando como identificador o endereço IP remoto e um número aleatório. Existe uma pequena chance de colisão de identificadores caso gere um número aleatório repetido para o mesmo endereço IP remoto. Ao inicializar, adiciona informações da requisição no log.
type LogCompatível ¶
type LogCompatível struct {
// contains filtered or unexported fields
}
LogCompatível implementa os métodos que serão utilizados pelo handler para acessar o log criado por este interceptador.
func (*LogCompatível) DefineLogger ¶
func (l *LogCompatível) DefineLogger(logger log.Logger)
DefineLogger defile o logger que será utilizado pelo handler.
func (LogCompatível) Logger ¶
func (l LogCompatível) Logger() log.Logger
Logger obtém o logger que será utilizado pelo handler.
type MensagensCompatível ¶
MensagensCompatível adiciona a possibilidade de retornar mensagens de erro nos handlers em um formato definido.
func (*MensagensCompatível) DefineMensagens ¶
func (m *MensagensCompatível) DefineMensagens(mensagens protocolo.Mensagens)
DefineMensagens define as mensagens que serão enviadas para o usuário na resposta.
type Padronizador ¶
type Padronizador struct { interceptor.NopInterceptor // contains filtered or unexported fields }
Padronizador normaliza e valida a requisição do usuário.
func NovoPadronizador ¶
func NovoPadronizador(p padronizador) *Padronizador
NovoPadronizador cria um novo interceptador Padronizador.
func (Padronizador) Before ¶
func (p Padronizador) Before() int
Before faz um tratamento da requisição, padronizando e validando o formato dos campos.
type ParâmetrosConsulta ¶
type ParâmetrosConsulta struct { interceptor.NopInterceptor // contains filtered or unexported fields }
ParâmetrosConsulta preenche os atributos do handler que se referenciam a parâmetros da consulta (query string) através da tag "query".
func NovoParâmetrosConsulta ¶
func NovoParâmetrosConsulta(h parâmetrosConsulta) *ParâmetrosConsulta
NovoParâmetrosConsulta cria um novo interceptador de parâmetros de consulta.
func (*ParâmetrosConsulta) Before ¶
func (p *ParâmetrosConsulta) Before() int
Before percorre os parâmetros de consulta e preenche nos atributos correspondentes do handler. Caso ocorra algum erro ao preencher um atributo uma mensagem é definida para alertar o usuário e detalhes serão escritos no log.
type VariáveisEndereço ¶
type VariáveisEndereço struct { interceptor.NopInterceptor // contains filtered or unexported fields }
VariáveisEndereço preenche os atributos do handler que se referenciam a parâmetros do endereço através da tag "urivar".
func NovaVariáveisEndereço ¶
func NovaVariáveisEndereço(v variáveisEndereço) *VariáveisEndereço
NovaVariáveisEndereço cria um novo interceptador de váriaveis de endereço.
func (*VariáveisEndereço) Before ¶
func (v *VariáveisEndereço) Before() int
Before percorre as variáveis de endereço e preenche nos atributos correspondentes do handler. Caso ocorra algum erro ao preencher um atributo uma mensagem é definida para alertar o usuário e detalhes serão escritos no log.