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 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
var AccessKeyTypeContextKey ContextKey = "AccessKeyType"
var UserIDContextKey ContextKey = "UserID"
type Gateway ¶
Gateway is a man in the middle to inject dependency It currently bind to HTTP method, it disregard path.
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{} Context context.Context 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 }
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) HasMasterKey ¶
HasMasterKey returns whether the payload has master access key
func (*Payload) RouteAction ¶
RouteAction must exist for every request
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 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"` 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 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.