api

package
v1.5.2 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2023 License: CC0-1.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ArrContains

func ArrContains[T string | int | float32](arr []T, val T) bool

func GenerateQueryComponenFromStruct

func GenerateQueryComponenFromStruct(model interface{}, skips []string) (string, []interface{}, string)

func GetStructKey

func GetStructKey(field reflect.StructField) string

func GetStructValue

func GetStructValue(value reflect.Value) interface{}

func InitHandler

func InitHandler(router http.Handler) http.Handler

func MethodNotAllowedHandler

func MethodNotAllowedHandler(w http.ResponseWriter, r *http.Request)

func PanicHandler

func PanicHandler(next http.Handler) http.Handler

func RouteNotFoundHandler

func RouteNotFoundHandler(w http.ResponseWriter, r *http.Request)

func WriteJson

func WriteJson(w http.ResponseWriter, data interface{})

Types

type App

type App struct {
	Http *chi.Mux
	*server.Config
	TotalEndpoints int
	// contains filtered or unexported fields
}

func NewApp

func NewApp(opts ...Options) *App

func (*App) AddController

func (app *App) AddController(ctrl Controller)

func (*App) Init

func (app *App) Init()

func (*App) Start

func (app *App) Start() error

type AppImplementor

type AppImplementor struct{}

type Apps

type Apps interface {
	LoadModules()
}

type Controller

type Controller interface {
	GetConfig() ControllerConfig
}

type ControllerConfig

type ControllerConfig struct {
	Path        string
	Routes      []Route
	Middlewares *[]func(http.Handler) http.Handler
}

type ControllerImpl

type ControllerImpl struct {
}

func (*ControllerImpl) JoinMiddleware

func (ctrl *ControllerImpl) JoinMiddleware(handlers ...func(http.Handler) http.Handler) *[]func(http.Handler) http.Handler

type ErrorOption

type ErrorOption func(*HttpError)

func WithCode

func WithCode(code string) ErrorOption

func WithData

func WithData(data interface{}) ErrorOption

func WithMessage

func WithMessage(message string) ErrorOption

func WithStatus

func WithStatus(status int) ErrorOption

type Handler

type Handler func(Request, context.Context) *Response

type HttpError

type HttpError struct {
	Message string       `json:"message"`
	Code    string       `json:"code"`
	Status  int          `json:"status"`
	Data    *interface{} `json:"data,omitempty"`
}

func BadRequest

func BadRequest(message, code string) *HttpError

func Forbidden

func Forbidden(message, code string) *HttpError

func InternalServerError

func InternalServerError(message, code string) *HttpError

func MethodNotAllowed

func MethodNotAllowed(message, code string) *HttpError

func NewErr

func NewErr(opts ...ErrorOption) *HttpError

func NotFound

func NotFound(message, code string) *HttpError

func TooManyRequest

func TooManyRequest(message, code string) *HttpError

func Unauthorized

func Unauthorized(message, code string) *HttpError

func UnprocessableEntity

func UnprocessableEntity(message, code string) *HttpError

func (*HttpError) Error

func (e *HttpError) Error() string

func (*HttpError) Write

func (err *HttpError) Write(w http.ResponseWriter)

type Map

type Map map[string]interface{}

type Options

type Options func(api *App)

func ReadTimeout

func ReadTimeout(readTimeout int) Options

func WithAPITimeout

func WithAPITimeout(apiTimeout int) Options

func WithAppPort

func WithAppPort(port int) Options

func WriteTimeout

func WriteTimeout(writeTimeout int) Options

type Request

type Request struct {
	GetParams  func(key string, defaultValue ...string) string
	GetQuery   func(interface{}) error
	GetBody    func(interface{}) error
	GetHeaders func(interface{}) error
}

type Response

type Response struct {
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
	Err     error       `json:"error"`
}

func NewResponse

func NewResponse() *Response

func (*Response) SetData

func (resp *Response) SetData(data interface{}) *Response

func (*Response) SetError

func (resp *Response) SetError(err error) *Response

func (*Response) SetHTTPError

func (resp *Response) SetHTTPError(err *HttpError) *Response

func (*Response) SetMessage

func (resp *Response) SetMessage(msg string) *Response

type Route

type Route struct {
	Method      string
	Path        string
	Handler     Handler
	Version     int
	Middlewares *[]func(http.Handler) http.Handler
}

func NewRoute

func NewRoute(method string, handler Handler, opts ...RouteOption) Route

func (*Route) GetVersionedPath

func (r *Route) GetVersionedPath(controllerPath string) string

type RouteOption

type RouteOption func(*Route)

func WithMiddleware

func WithMiddleware(handlers ...func(http.Handler) http.Handler) RouteOption

func WithPath

func WithPath(path string) RouteOption

func WithVersion

func WithVersion(version int) RouteOption

type StringMap

type StringMap map[string]string

type ValidationError

type ValidationError struct {
	Field string `json:"field"`
	Tag   string `json:"tag"`
	Value string `json:"value"`
}

func ValidateStruct

func ValidateStruct(data interface{}) []*ValidationError

type WrittenResponseWriter

type WrittenResponseWriter struct {
	http.ResponseWriter
	// contains filtered or unexported fields
}

func (*WrittenResponseWriter) Write

func (w *WrittenResponseWriter) Write(b []byte) (int, error)

func (*WrittenResponseWriter) WriteHeader

func (w *WrittenResponseWriter) WriteHeader(status int)

func (*WrittenResponseWriter) Written

func (w *WrittenResponseWriter) Written() bool

Jump to

Keyboard shortcuts

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