Documentation
¶
Index ¶
- Constants
- Variables
- func BuildNextURL(u url.URL, i interface{}) (url.URL, error)
- func NewRouter(routes Routes) *mux.Router
- func WriteAPIErrorResponse(w http.ResponseWriter, err error)
- func WriteAPIResponse(w http.ResponseWriter, status int, body interface{})
- type Controller
- type Route
- type Router
- type Routes
- type User
- type UserDetailer
- type UserDetails
- type UserDetailsMiddleware
Constants ¶
const AdminGroupName = "Admin"
AdminGroupName - Has a string to define Admins
const DceCtxKey dceCtxKeyType = "dce"
DceCtxKey - Context Key
const UserGroupName = "User"
UserGroupName - Has the string to define Users
Variables ¶
var EmptyQueryString []string
EmptyQueryString - Empty query string to prevent
Functions ¶
func BuildNextURL ¶
BuildNextURL merges the next parameters of pagination into the request parameters and returns an API URL.
func WriteAPIErrorResponse ¶
func WriteAPIErrorResponse(w http.ResponseWriter, err error)
WriteAPIErrorResponse writes an error to the ResponseWriter
func WriteAPIResponse ¶
func WriteAPIResponse(w http.ResponseWriter, status int, body interface{})
WriteAPIResponse writes the response out to the provided ResponseWriter
Types ¶
type Controller ¶
type Controller interface {
// Call is invoked when an instance of a controller is handling a request. Returns a response to be returned to the
// API consumer.
Call(ctx context.Context, req *events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error)
}
Controller is the base controller interface for API Gateway Lambda handlers.
type Route ¶
type Route struct {
Name string
Method string
Pattern string
Queries []string
HandlerFunc http.HandlerFunc
}
Route - A route
type Router ¶
type Router struct {
ResourceName string
ListController Controller
DeleteController Controller
GetController Controller
CreateController Controller
UserDetails UserDetailer
}
Router structure holds AccountController instance for request
func (*Router) Route ¶
func (router *Router) Route(ctx context.Context, req *events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error)
Route - provides a router for the given resource
type UserDetailer ¶
type UserDetailer interface {
GetUser(reqCtx *events.APIGatewayProxyRequestContext) *User
}
UserDetailer - used for mocking tests
type UserDetails ¶
type UserDetails struct {
CognitoUserPoolID string `env:"COGNITO_USER_POOL_ID" defaultEnv:"DefaultCognitoUserPoolId"`
RolesAttributesAdminName string `env:"COGNITO_ROLES_ATTRIBUTE_ADMIN_NAME" defaultEnv:"DefaultCognitoAdminName"`
CognitoClient awsiface.CognitoIdentityProviderAPI
}
UserDetails - Gets User information
func (*UserDetails) GetUser ¶
func (u *UserDetails) GetUser(reqCtx *events.APIGatewayProxyRequestContext) *User
GetUser - Gets the username and role out of an http request object Assumes that the request is via a Lambda event. Uses cognito metadata from the request to determine the user info. If the request is not authenticated with cognito, returns a generic admin user: User{ Username: "", Role: "Admin" }
type UserDetailsMiddleware ¶
type UserDetailsMiddleware struct {
GorillaMuxAdapter *gorillamux.GorillaMuxAdapter
UserDetailer UserDetailer
}
func (*UserDetailsMiddleware) Middleware ¶
func (u *UserDetailsMiddleware) Middleware(next http.Handler) http.Handler