interceptador

package
v0.0.0-...-56803a9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2016 License: MIT Imports: 21 Imported by: 0

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 NovoBD

func NovoBD(h sqler) *BD

NovoBD cria um novo interceptador BD.

func (*BD) After

func (i *BD) After(status int) int

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

func (i *BD) Before() int

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

type CabeçalhoCompatível struct {
	Cabeçalho http.Header `response:"header"`
}

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 NovoLog

func NovoLog(h logger) *Log

NovoLog cria um novo interceptador Log.

func (Log) After

func (l Log) After(status int) int

After adiciona informações da resposta no log.

func (Log) Before

func (l Log) Before() int

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

type MensagensCompatível struct {
	Mensagens protocolo.Mensagens `response:"all"`
}

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL