Documentation ¶
Index ¶
- type AccessKeyType
- type AccessToken
- type CORSMiddleware
- type ContextKey
- type Gateway
- func (g *Gateway) GET(handler Handler, preprocessors ...Processor)
- func (g *Gateway) Handle(method string, handler Handler, preprocessors ...Processor)
- func (r *Gateway) HandlePayload(payload *Payload, resp *Response)
- func (g *Gateway) POST(handler Handler, preprocessors ...Processor)
- func (g *Gateway) PUT(handler Handler, preprocessors ...Processor)
- func (g *Gateway) ServeHTTP(w http.ResponseWriter, req *http.Request)
- type Handler
- type HandlerFunc
- type HandlerInjector
- type LoggingMiddleware
- type Payload
- type PreprocessorRegistry
- type Processor
- type RequestIDMiddleware
- type Response
- type Router
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessKeyType ¶
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 ¶
func (i AccessKeyType) String() string
type AccessToken ¶
type AccessToken interface { // IssuedAt returns the time when the access token is issued. If the // information is not available, the IsZero method of the // returned time is true. IssuedAt() time.Time }
AccessToken is an interface to access information about the Access Token in the payload.
type CORSMiddleware ¶
func (*CORSMiddleware) ServeHTTP ¶
func (cors *CORSMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request)
type ContextKey ¶ added in v0.18.0
type ContextKey string
ContextKey is the name of the values that are saved to context.Context.
var AccessKeyTypeContextKey ContextKey = "AccessKeyType"
var UserIDContextKey ContextKey = "UserID"
type Gateway ¶
type Gateway struct { ParamMatch *regexp.Regexp Tag string // 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 (*Gateway) Handle ¶
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) HandlePayload ¶ added in v0.24.0
type Handler ¶
Handler specifies the interface of a request handler
func NewFuncHandler ¶
func NewFuncHandler(f HandlerFunc) Handler
NewFuncHandler is intend for using in test, not actual code.
type HandlerFunc ¶
HandlerFunc specifies the function signature of a request handler function
type HandlerInjector ¶
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 ¶
func (i *HandlerInjector) Inject(h Handler) Handler
func (*HandlerInjector) InjectProcessors ¶
func (i *HandlerInjector) InjectProcessors(h Handler) Handler
func (*HandlerInjector) InjectServices ¶
func (i *HandlerInjector) InjectServices(h Handler) Handler
type LoggingMiddleware ¶
type LoggingMiddleware struct { Skips []string MimeConcern []string Next http.Handler ByteLimit *int }
func (*LoggingMiddleware) ServeHTTP ¶
func (l *LoggingMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request)
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{} AppName string AuthInfoID string AuthInfo *skydb.AuthInfo AccessKey AccessKeyType // AccessToken stores access token for this payload. // // The field is injected by preprocessor. The field // is nil if the AccessToken does not exist or is not valid. AccessToken AccessToken DBConn skydb.Conn Database skydb.Database User *skydb.Record // contains filtered or unexported fields }
Payload is for passing payload to the actual handler
func (*Payload) AccessTokenString ¶
AccessTokenString return the user input string TODO: accept all header, json payload, query string(in order)
func (*Payload) Context ¶
Context returns the payload context.
If the context is nil, the background context will be used. The background context will also be set to the payload. In other words this function has side effect.
func (*Payload) HasMasterKey ¶
HasMasterKey returns whether the payload has master access key
func (*Payload) RouteAction ¶
RouteAction must exist for every request
func (*Payload) SetContext ¶ added in v1.6.0
SetContext sets the specified context to the payload.
type PreprocessorRegistry ¶
PreprocessorRegistry is holding all preprocessors and their mapping with a string name.
func (PreprocessorRegistry) GetByNames ¶
func (r PreprocessorRegistry) GetByNames(names ...string) []Processor
GetByNames returns a list of registered preprocessors by preprocessor names.
type RequestIDMiddleware ¶ added in v1.6.0
func (*RequestIDMiddleware) ServeHTTP ¶ added in v1.6.0
func (m *RequestIDMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request)
type Response ¶
type Response struct { Meta map[string][]string `json:"-"` Info interface{} `json:"info,omitempty"` Result interface{} `json:"result,omitempty"` Err skyerr.Error `json:"error,omitempty"` DatabaseID string `json:"database_id,omitempty"` // contains filtered or unexported fields }
Response is interface for handler to write response to router
func NewResponse ¶ added in v0.24.0
func NewResponse(writer http.ResponseWriter) *Response
func (*Response) Writer ¶ added in v0.22.0
func (resp *Response) Writer() (writer http.ResponseWriter)
Writer returns a http.ResponseWriter only once. If a writer is already returned, this function will always return nil.
Any http.Handler handling the request may get a http.ResponseWriter by calling this function. Once called, the caller is responsible for writing a response. No other Handler will be able to write to the same ResponseWriter.