app

package
v0.0.0-...-3452d59 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2020 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package app ties together application resources and handlers.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrBadRequest returns status 400 Bad Request for malformed request body.
	ErrBadRequest = &ErrResponse{HTTPStatusCode: http.StatusBadRequest, StatusText: http.StatusText(http.StatusBadRequest)}

	// ErrUnauthorized returns 401 Unauthorized.
	ErrUnauthorized = &ErrResponse{HTTPStatusCode: http.StatusUnauthorized, StatusText: http.StatusText(http.StatusUnauthorized)}

	// ErrForbidden returns status 403 Forbidden for unauthorized request.
	ErrForbidden = &ErrResponse{HTTPStatusCode: http.StatusForbidden, StatusText: http.StatusText(http.StatusForbidden)}

	// ErrNotFound returns status 404 Not Found for invalid resource request.
	ErrNotFound = &ErrResponse{HTTPStatusCode: http.StatusNotFound, StatusText: http.StatusText(http.StatusNotFound)}

	// ErrInternalServerError returns status 500 Internal Server Error.
	ErrInternalServerError = &ErrResponse{HTTPStatusCode: http.StatusInternalServerError, StatusText: http.StatusText(http.StatusInternalServerError)}
)

Functions

func ErrInvalidRequest

func ErrInvalidRequest(err error) render.Renderer

ErrInvalidRequest returns status 422 Unprocessable Entity including error message.

func ErrRender

func ErrRender(err error) render.Renderer

ErrRender returns status 422 Unprocessable Entity rendering response error.

func ErrValidation

func ErrValidation(err error, valErr validation.Errors) render.Renderer

ErrValidation returns status 422 Unprocessable Entity stating validation errors.

func LinkIDCtx

func LinkIDCtx(next http.Handler) http.Handler

LinkCtx middleware is used to load an LinkID from the URL parameters passed through as the request. In case the LinkID could not be found, we stop here and return a 404.

Types

type API

type API struct {
	Links *LinksResource
}

API provides application resources and handlers.

func NewAPI

func NewAPI() (*API, error)

NewAPI configures and returns application API.

func (*API) Router

func (a *API) Router() *chi.Mux

Router provides application routes.

type DocumentResponse

type DocumentResponse struct {
	models.Document `json:"document,omitempty"`
}

DocumentResponse is the response payload for the Document data model.

In the DocumentResponse object, first a Render() is called on itself, then the next field, and so on, all the way down the tree. Render is called in top-down order, like a http handler middleware chain.

type ErrResponse

type ErrResponse struct {
	Err            error `json:"-"` // low-level runtime error
	HTTPStatusCode int   `json:"-"` // http response status code

	StatusText       string            `json:"status"`           // user-level status message
	AppCode          int64             `json:"code,omitempty"`   // application-specific error code
	ErrorText        string            `json:"error,omitempty"`  // application-level error message, for debugging
	ValidationErrors validation.Errors `json:"errors,omitempty"` // user level model validation errors
}

ErrResponse renderer type for handling all sorts of errors.

func (*ErrResponse) Render

func (e *ErrResponse) Render(w http.ResponseWriter, r *http.Request) error

Render sets the application-specific error code in AppCode.

type LinksResource

type LinksResource struct {
}

LinksResource implements links controller handler.

func NewLinksResource

func NewLinksResource() *LinksResource

NewLinksResource creates and returns a links resource.

type LinksResponse

type LinksResponse struct {
	models.Links `json:"link,omitempty"`
}

LinksResponse is the response payload for the Document data model.

In the DocumentResponse object, first a Render() is called on itself, then the next field, and so on, all the way down the tree. Render is called in top-down order, like a http handler middleware chain.

Jump to

Keyboard shortcuts

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