api

package
v0.6.1 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2023 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrTypeAssertionError is thrown when type an interface does not match the asserted type
	ErrTypeAssertionError = errors.New("unable to assert type")
)

Functions

func AssertAddTodoItemRequestRequired

func AssertAddTodoItemRequestRequired(obj AddTodoItemRequest) error

AssertAddTodoItemRequestRequired checks if the required fields are not zero-ed

func AssertErrorRequired

func AssertErrorRequired(obj Error) error

AssertErrorRequired checks if the required fields are not zero-ed

func AssertRecurseAddTodoItemRequestRequired

func AssertRecurseAddTodoItemRequestRequired(objSlice interface{}) error

AssertRecurseAddTodoItemRequestRequired recursively checks if required fields are not zero-ed in a nested slice. Accepts only nested slice of AddTodoItemRequest (e.g. [][]AddTodoItemRequest), otherwise ErrTypeAssertionError is thrown.

func AssertRecurseErrorRequired

func AssertRecurseErrorRequired(objSlice interface{}) error

AssertRecurseErrorRequired recursively checks if required fields are not zero-ed in a nested slice. Accepts only nested slice of Error (e.g. [][]Error), otherwise ErrTypeAssertionError is thrown.

func AssertRecurseInterfaceRequired

func AssertRecurseInterfaceRequired(obj interface{}, callback func(interface{}) error) error

AssertRecurseInterfaceRequired recursively checks each struct in a slice against the callback. This method traverse nested slices in a preorder fashion.

func AssertRecurseTodoItemRequired

func AssertRecurseTodoItemRequired(objSlice interface{}) error

AssertRecurseTodoItemRequired recursively checks if required fields are not zero-ed in a nested slice. Accepts only nested slice of TodoItem (e.g. [][]TodoItem), otherwise ErrTypeAssertionError is thrown.

func AssertRecurseUpdateTodoItemRequestRequired

func AssertRecurseUpdateTodoItemRequestRequired(objSlice interface{}) error

AssertRecurseUpdateTodoItemRequestRequired recursively checks if required fields are not zero-ed in a nested slice. Accepts only nested slice of UpdateTodoItemRequest (e.g. [][]UpdateTodoItemRequest), otherwise ErrTypeAssertionError is thrown.

func AssertRecurseValueRequired

func AssertRecurseValueRequired(value reflect.Value, callback func(interface{}) error) error

AssertRecurseValueRequired checks each struct in the nested slice against the callback. This method traverse nested slices in a preorder fashion.

func AssertTodoItemRequired

func AssertTodoItemRequired(obj TodoItem) error

AssertTodoItemRequired checks if the required fields are not zero-ed

func AssertUpdateTodoItemRequestRequired

func AssertUpdateTodoItemRequestRequired(obj UpdateTodoItemRequest) error

AssertUpdateTodoItemRequestRequired checks if the required fields are not zero-ed

func DefaultErrorHandler

func DefaultErrorHandler(w http.ResponseWriter, r *http.Request, err error, result *ImplResponse)

DefaultErrorHandler defines the default logic on how to handle errors from the controller. Any errors from parsing request params will return a StatusBadRequest. Otherwise, the error code originating from the servicer will be used.

func EncodeJSONResponse

func EncodeJSONResponse(i interface{}, status *int, w http.ResponseWriter) error

EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code

func IsZeroValue

func IsZeroValue(val interface{}) bool

IsZeroValue checks if the val is the zero-ed value.

func Logger

func Logger(inner http.Handler, name string) http.Handler

func NewRouter

func NewRouter(routers ...Router) chi.Router

NewRouter creates a new router for any number of api routers

func ReadFormFileToTempFile

func ReadFormFileToTempFile(r *http.Request, key string) (*os.File, error)

ReadFormFileToTempFile reads file data from a request form and writes it to a temporary file

func ReadFormFilesToTempFiles

func ReadFormFilesToTempFiles(r *http.Request, key string) ([]*os.File, error)

ReadFormFilesToTempFiles reads files array data from a request form and writes it to a temporary files

Types

type AddTodoItemRequest

type AddTodoItemRequest struct {
	Title string `json:"title"`

	Order int32 `json:"order"`
}

type Error

type Error struct {
	Type string `json:"type"`

	Title string `json:"title,omitempty"`

	Status int32 `json:"status,omitempty"`

	Detail string `json:"detail,omitempty"`

	Instance string `json:"instance,omitempty"`
}

type ErrorHandler

type ErrorHandler func(w http.ResponseWriter, r *http.Request, err error, result *ImplResponse)

ErrorHandler defines the required method for handling error. You may implement it and inject this into a controller if you would like errors to be handled differently from the DefaultErrorHandler

type ImplResponse

type ImplResponse struct {
	Code int
	Body interface{}
}

ImplResponse response defines an error code with the associated body

func Response

func Response(code int, body interface{}) ImplResponse

Response return a ImplResponse struct filled

type ParsingError

type ParsingError struct {
	Err error
}

ParsingError indicates that an error has occurred when parsing request parameters

func (*ParsingError) Error

func (e *ParsingError) Error() string

func (*ParsingError) Unwrap

func (e *ParsingError) Unwrap() error

type RequiredError

type RequiredError struct {
	Field string
}

RequiredError indicates that an error has occurred when parsing request parameters

func (*RequiredError) Error

func (e *RequiredError) Error() string

type Route

type Route struct {
	Name        string
	Method      string
	Pattern     string
	HandlerFunc http.HandlerFunc
}

A Route defines the parameters for an api endpoint

type Router

type Router interface {
	Routes() Routes
}

Router defines the required methods for retrieving api routes

func NewTodoListApiController

func NewTodoListApiController(s TodoListApiServicer, opts ...TodoListApiOption) Router

NewTodoListApiController creates a default api controller

type Routes

type Routes []Route

Routes are a collection of defined api endpoints

type TodoItem

type TodoItem struct {
	Id string `json:"id"`

	Title string `json:"title"`

	Completed bool `json:"completed"`

	Order int32 `json:"order"`

	Url string `json:"url"`
}

type TodoListApiController

type TodoListApiController struct {
	// contains filtered or unexported fields
}

TodoListApiController binds http requests to an api service and writes the service results to the http response

func (*TodoListApiController) AddItem

AddItem - Add a new item to the list

func (*TodoListApiController) DeleteItem

func (c *TodoListApiController) DeleteItem(w http.ResponseWriter, r *http.Request)

DeleteItem - Delete an item

func (*TodoListApiController) DeleteItems

func (c *TodoListApiController) DeleteItems(w http.ResponseWriter, r *http.Request)

DeleteItems - Delete all items

func (*TodoListApiController) GetItem

GetItem - Get an item

func (*TodoListApiController) ListItems

ListItems - List items

func (*TodoListApiController) Routes

func (c *TodoListApiController) Routes() Routes

Routes returns all the api routes for the TodoListApiController

func (*TodoListApiController) UpdateItem

func (c *TodoListApiController) UpdateItem(w http.ResponseWriter, r *http.Request)

UpdateItem - Update an existing item

type TodoListApiOption

type TodoListApiOption func(*TodoListApiController)

TodoListApiOption for how the controller is set up.

func WithTodoListApiErrorHandler

func WithTodoListApiErrorHandler(h ErrorHandler) TodoListApiOption

WithTodoListApiErrorHandler inject ErrorHandler into controller

type TodoListApiRouter

type TodoListApiRouter interface {
	AddItem(http.ResponseWriter, *http.Request)
	DeleteItem(http.ResponseWriter, *http.Request)
	DeleteItems(http.ResponseWriter, *http.Request)
	GetItem(http.ResponseWriter, *http.Request)
	ListItems(http.ResponseWriter, *http.Request)
	UpdateItem(http.ResponseWriter, *http.Request)
}

TodoListApiRouter defines the required methods for binding the api requests to a responses for the TodoListApi The TodoListApiRouter implementation should parse necessary information from the http request, pass the data to a TodoListApiServicer to perform the required actions, then write the service results to the http response.

type TodoListApiServicer

TodoListApiServicer defines the api actions for the TodoListApi service This interface intended to stay up to date with the openapi yaml used to generate it, while the service implementation can be ignored with the .openapi-generator-ignore file and updated with the logic required for the API.

type UpdateTodoItemRequest

type UpdateTodoItemRequest struct {
	Title *string `json:"title,omitempty"`

	Completed *bool `json:"completed,omitempty"`

	Order *int32 `json:"order,omitempty"`
}

Jump to

Keyboard shortcuts

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