Documentation ¶
Index ¶
- Constants
- Variables
- type AWSServerlessApi
- type AWSServerlessFunction
- type ApiGatewayAnyMethod
- type ApiGatewayIntegration
- type ContextIdentity
- type Event
- type EventHandlerFunc
- type LambdaFunctionArn
- type RequestContext
- type ServerlessRouter
- func (r *ServerlessRouter) AddAPI(a *cloudformation.AWSServerlessApi) error
- func (r *ServerlessRouter) AddFunction(f *cloudformation.AWSServerlessFunction, handler EventHandlerFunc) error
- func (r *ServerlessRouter) AddStaticDir(dirname string)
- func (r *ServerlessRouter) Mounts() []*ServerlessRouterMount
- func (r *ServerlessRouter) Router() http.Handler
- type ServerlessRouterMount
Constants ¶
const MuxPathRegex = ".+"
Variables ¶
var ErrNoEventsFound = errors.New("no events with type 'Api' were found")
ErrNoEventsFound is thrown if a AWS::Serverless::Function is added to this router, but no API event sources exist for it.
var HttpMethods = []string{"OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "PATCH"}
Functions ¶
This section is empty.
Types ¶
type AWSServerlessApi ¶
type AWSServerlessApi struct {
*cloudformation.AWSServerlessApi
}
AWSServerlessApi wraps GoFormation's AWS::Serverless::Api definition and adds some convenience methods for extracting the ServerlessRouterMount's from the swagger defintion etc.
func (*AWSServerlessApi) Mounts ¶
func (api *AWSServerlessApi) Mounts() ([]*ServerlessRouterMount, error)
Mounts fetches an array of the ServerlessRouterMount's for this API. These contain the path, method and handler function for each mount point.
func (*AWSServerlessApi) Swagger ¶
func (api *AWSServerlessApi) Swagger() ([]byte, error)
Swagger gets the swagger definition for the API. Returns the swagger definition as a []byte of JSON.
type AWSServerlessFunction ¶
type AWSServerlessFunction struct { *cloudformation.AWSServerlessFunction // contains filtered or unexported fields }
AWSServerlessFunction wraps GoFormation's AWS::Serverless::Function definition and adds some convenience methods for extracting the ServerlessRouterMount's from the event sources.
func (*AWSServerlessFunction) Mounts ¶
func (f *AWSServerlessFunction) Mounts() ([]*ServerlessRouterMount, error)
Mounts fetches an array of the ServerlessRouterMount's for this API. These contain the path, method and handler function for each mount point.
type ApiGatewayAnyMethod ¶ added in v0.2.3
type ApiGatewayAnyMethod struct {
IntegrationSettings interface{} `json:"x-amazon-apigateway-integration"`
}
temporary object. This is just used to marshal and unmarshal the any method API Gateway swagger extension
type ApiGatewayIntegration ¶ added in v0.2.3
type ApiGatewayIntegration struct { Uri string `json:"uri"` PassthroughBehavior string `json:"passthroughBehavior"` Type string `json:"type"` }
func (*ApiGatewayIntegration) GetFunctionArn ¶ added in v0.2.3
func (i *ApiGatewayIntegration) GetFunctionArn() (*LambdaFunctionArn, error)
type ContextIdentity ¶ added in v0.2.7
type ContextIdentity struct { APIKey string `json:"apiKey,omitempty"` UserARN string `json:"userArn,omitempty"` CognitoAuthenticationType string `json:"cognitoAuthenticationType,omitempty"` Caller string `json:"caller,omitempty"` UserAgent string `json:"userAgent,omitempty"` User string `json:"user,omitempty"` CognitoIdentityPoolID string `json:"cognitoIdentityPoolId,omitempty"` CognitoIdentityID string `json:"cognitoIdentityId,omitempty"` CognitoAuthenticationProvider string `json:"cognitoAuthenticationProvider,omitempty"` SourceIP string `json:"sourceIp,omitempty"` AccountID string `json:"accountId,omitempty"` }
ContextIdentity represents the identity section of the context object that gets passed to an AWS Lambda function
type Event ¶ added in v0.2.7
type Event struct { HTTPMethod string `json:"httpMethod"` Body string `json:"body"` Resource string `json:"resource"` RequestContext RequestContext `json:"requestContext"` QueryStringParams map[string]string `json:"queryStringParameters"` Headers map[string]string `json:"headers"` PathParameters map[string]string `json:"pathParameters"` StageVariables map[string]string `json:"stageVariables"` Path string `json:"path"` IsBase64Encoded bool `json:"isBase64Encoded"` }
Event represents an event passed to an AWS Lambda function by the runtime
type EventHandlerFunc ¶ added in v0.2.7
type EventHandlerFunc func(http.ResponseWriter, *Event)
EventHandlerFunc is similar to Go http.Handler but it receives an event from API Gateway instead of http.Request
type LambdaFunctionArn ¶ added in v0.2.3
type LambdaFunctionArn struct {
Arn string
}
func (*LambdaFunctionArn) GetFunctionName ¶ added in v0.2.3
func (a *LambdaFunctionArn) GetFunctionName() (string, error)
type RequestContext ¶ added in v0.2.7
type RequestContext struct { ResourceID string `json:"resourceId,omitempty"` APIID string `json:"apiId,omitempty"` ResourcePath string `json:"resourcePath,omitempty"` HTTPMethod string `json:"httpMethod,omitempty"` RequestID string `json:"requestId,omitempty"` AccountsID string `json:"accountId,omitempty"` Stage string `json:"stage,omitempty"` Identity ContextIdentity `json:"identity,omitempty"` }
RequestContext represents the context object that gets passed to an AWS Lambda function
type ServerlessRouter ¶
type ServerlessRouter struct {
// contains filtered or unexported fields
}
ServerlessRouter takes AWS::Serverless::Function and AWS::Serverless::API objects and creates a Go http.Handler with the correct paths/methods mounted
func NewServerlessRouter ¶
func NewServerlessRouter(usePrefix bool) *ServerlessRouter
NewServerlessRouter creates a new instance of ServerlessRouter. If usePrefix is true then route matching is done using prefix instead of exact match
func (*ServerlessRouter) AddAPI ¶
func (r *ServerlessRouter) AddAPI(a *cloudformation.AWSServerlessApi) error
AddAPI adds a AWS::Serverless::Api resource to the router, and mounts all of it's API definition
func (*ServerlessRouter) AddFunction ¶
func (r *ServerlessRouter) AddFunction(f *cloudformation.AWSServerlessFunction, handler EventHandlerFunc) error
AddFunction adds a AWS::Serverless::Function to the router and mounts all of it's event sources that have type 'Api'
func (*ServerlessRouter) AddStaticDir ¶
func (r *ServerlessRouter) AddStaticDir(dirname string)
AddStaticDir mounts a static directory provided, at the mount point also provided
func (*ServerlessRouter) Mounts ¶
func (r *ServerlessRouter) Mounts() []*ServerlessRouterMount
Mounts returns a list of the mounts associated with this router
func (*ServerlessRouter) Router ¶
func (r *ServerlessRouter) Router() http.Handler
Router returns the Go http.Handler for the router, to be passed to http.ListenAndServe()
type ServerlessRouterMount ¶
type ServerlessRouterMount struct { Name string Function *AWSServerlessFunction Handler EventHandlerFunc Path string Method string BinaryMediaTypes []string // authorization settings AuthType string AuthFunction *AWSServerlessFunction IntegrationArn *LambdaFunctionArn }
ServerlessRouterMount represents a single mount point on the API Such as '/path', the HTTP method, and the function to resolve it
func (*ServerlessRouterMount) GetMuxPath ¶ added in v0.2.3
func (m *ServerlessRouterMount) GetMuxPath() string
Returns the mount path adjusted for mux syntax. For example, if the SAM template specifies /{proxy+} we replace that with /{proxy:.*}
func (*ServerlessRouterMount) Methods ¶
func (m *ServerlessRouterMount) Methods() []string
Methods gets an array of HTTP methods from a AWS::Serverless::Function API event source method declaration (which could include 'any')
func (*ServerlessRouterMount) WrappedHandler ¶ added in v0.2.7
func (m *ServerlessRouterMount) WrappedHandler() http.HandlerFunc
Returns the wrapped handler to encode the body as base64 when binary media types contains Content-Type