router

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2016 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CORSMiddleware added in v0.5.0

func CORSMiddleware(next http.Handler, corsOrigin string) http.Handler

func LoggingMiddleware

func LoggingMiddleware(next http.Handler, skipBody bool) http.Handler

Types

type AccessKeyType added in v0.6.0

type AccessKeyType int

AccessKeyType is the type of the access key specified in client request

const (
	// NoAccessKey denotes that an access key is not specified
	NoAccessKey AccessKeyType = 0 + iota

	// ClientAccessKey denotes that a client access key is specified
	ClientAccessKey

	// MasterAccessKey denotes that a master aclieneccess key is specified
	MasterAccessKey
)

func (AccessKeyType) String added in v0.6.0

func (i AccessKeyType) String() string

type Gateway

type Gateway struct {
	ParamMatch *regexp.Regexp
	// contains filtered or unexported fields
}

Gateway is a man in the middle to inject dependency It currently bind to HTTP method, it disregard path.

func NewGateway

func NewGateway(pattern string) *Gateway

func (*Gateway) GET

func (g *Gateway) GET(handler Handler, preprocessors ...Processor)

GET register a URL handler by method GET

func (*Gateway) Handle

func (g *Gateway) Handle(method string, handler Handler, preprocessors ...Processor)

Handle registers a handler matched by a request's method and URL's path. Pattern is a regexp that defines a matched URL.

func (*Gateway) POST

func (g *Gateway) POST(handler Handler, preprocessors ...Processor)

POST register a URL handler by method POST

func (*Gateway) PUT

func (g *Gateway) PUT(handler Handler, preprocessors ...Processor)

PUT register a URL handler by method PUT

func (*Gateway) ServeHTTP

func (g *Gateway) ServeHTTP(w http.ResponseWriter, req *http.Request)

type Handler

type Handler interface {
	Setup()
	GetPreprocessors() []Processor
	Handle(*Payload, *Response)
}

Handler specifies the interface of a request handler

func NewFuncHandler added in v0.4.0

func NewFuncHandler(f HandlerFunc) Handler

NewFuncHandler is intend for using in test, not actual code.

type HandlerFunc added in v0.4.0

type HandlerFunc func(*Payload, *Response)

HandlerFunc specifies the function signature of a request handler function

type HandlerInjector added in v0.4.1

type HandlerInjector struct {
	ServiceGraph    *inject.Graph
	PreprocessorMap *PreprocessorRegistry
}

HandlerInjector is standard way to inject Services and Preprocessors specified by the Handler struct.

func (*HandlerInjector) Inject added in v0.4.1

func (i *HandlerInjector) Inject(h Handler) Handler

func (*HandlerInjector) InjectProcessors added in v0.4.1

func (i *HandlerInjector) InjectProcessors(h Handler) Handler

func (*HandlerInjector) InjectServices added in v0.4.1

func (i *HandlerInjector) InjectServices(h Handler) Handler

type Payload

type Payload struct {
	// the raw http.Request of this payload
	// Think twice before accessing it
	Req *http.Request
	// URL parameters
	Params []string

	// Map of params such as Auth, TimeSteam, version
	Meta map[string]interface{}
	// Map of action payload
	Data map[string]interface{}

	Context context.Context

	AppName    string
	UserInfoID string
	UserInfo   *skydb.UserInfo
	AccessKey  AccessKeyType

	DBConn   skydb.Conn
	Database skydb.Database
}

Payload is for passing payload to the actual handler

func (*Payload) APIKey

func (p *Payload) APIKey() string

APIKey returns the api key in the request.

func (*Payload) AccessToken

func (p *Payload) AccessToken() string

AccessToken return the user input string TODO: accept all header, json payload, query string(in order)

func (*Payload) RouteAction

func (p *Payload) RouteAction() string

RouteAction must exist for every request

type PreprocessorRegistry added in v0.4.0

type PreprocessorRegistry map[string]Processor

PreprocessorRegistry is holding all preprocessors and their mapping with a string name.

func (PreprocessorRegistry) GetByNames added in v0.4.0

func (r PreprocessorRegistry) GetByNames(names ...string) []Processor

GetByNames returns a list of registered preprocessors by preprocessor names.

type Processor

type Processor interface {
	Preprocess(*Payload, *Response) int
}

Processor specifies the function signature for a Processor

type Response

type Response struct {
	Meta       map[string]interface{} `json:"-"`
	Info       interface{}            `json:"info,omitempty"`
	Result     interface{}            `json:"result,omitempty"`
	Err        skyerr.Error           `json:"error,omitempty"`
	RequestID  string                 `json:"request_id,omitempty"`
	DatabaseID string                 `json:"database_id,omitempty"`
	// contains filtered or unexported fields
}

Response is interface for handler to write response to router

func (*Response) Header

func (resp *Response) Header() http.Header

Header returns the header map being written before return a response. Mutating the map after calling WriteEntity has no effects.

func (*Response) Hijack

func (resp *Response) Hijack() (c net.Conn, w *bufio.ReadWriter, e error)

func (*Response) Write

func (resp *Response) Write(b []byte) (int, error)

Write writes raw bytes as response to a request.

func (*Response) WriteEntity

func (resp *Response) WriteEntity(i interface{}) error

WriteEntity writes a value as response to a request. Currently it only writes JSON response.

func (*Response) WriteHeader

func (resp *Response) WriteHeader(status int)

type Router

type Router struct {
	// contains filtered or unexported fields
}

Router to dispatch HTTP request to respective handler

func NewRouter

func NewRouter() *Router

NewRouter is factory for Router

func (*Router) Map

func (r *Router) Map(action string, handler Handler, preprocessors ...Processor)

Map to register action to handle mapping

func (*Router) ServeHTTP

func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request)

Jump to

Keyboard shortcuts

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