Documentation
¶
Overview ¶
Package apiframework provides HTTP request/response helpers for the Contenox API. For OpenAPI generation (tools/openapi-gen), place // @request pkg.Type after Decode and // @response pkg.Type after Encode; path and query documentation uses the description arguments on GetPathParam / GetQueryParam.
Index ¶
- Variables
- func Decode[T any](r *http.Request) (T, error)
- func Encode[T any](w http.ResponseWriter, _ *http.Request, status int, v T) error
- func EnforceToken(expectedToken string, next http.Handler) http.Handler
- func Error(w http.ResponseWriter, r *http.Request, err error, op Operation) error
- func GetErrorParam(err error) string
- func GetPathParam(r *http.Request, name string, description string) string
- func GetQueryParam(r *http.Request, name, defaultValue, description string) string
- func HandleAPIError(resp *http.Response) error
- func IsAPIError(err error) (message, errorCode, errorType, param string, ok bool)
- func RequestIDMiddleware(next http.Handler) http.Handler
- func TokenMiddleware(next http.Handler) http.Handler
- func TracingMiddleware(next http.Handler) http.Handler
- type APIError
- func BadPathValue(param string, message ...string) *APIError
- func BadRequest(message ...string) *APIError
- func Conflict(message ...string) *APIError
- func FileEmpty(message ...string) *APIError
- func FileSizeLimitExceeded(message ...string) *APIError
- func Forbidden(message ...string) *APIError
- func ImmutableGroup(message ...string) *APIError
- func ImmutableModel(message ...string) *APIError
- func InternalServerError(message ...string) *APIError
- func InvalidChain(message ...string) *APIError
- func InvalidParameterValue(param string, message ...string) *APIError
- func MissingParameter(param string, message ...string) *APIError
- func NewAPIError(err error, message, param string) *APIError
- func NotFound(message ...string) *APIError
- func Unauthorized(message ...string) *APIError
- func UnprocessableEntity(message ...string) *APIError
- func UnsupportedMediaType(message ...string) *APIError
- type AboutServer
- type ContextKey
- type MessageResponse
- type Operation
Constants ¶
This section is empty.
Variables ¶
var ( ErrEncodeInvalidJSON = errors.New("serverops: encoding failing, invalid json") ErrDecodeInvalidJSON = errors.New("serverops: decoding failing, invalid json") ErrDecodeInvalidYAML = errors.New("serverops: decoding failing, invalid yaml") ErrDecodeBase64 = errors.New("serverops: decoding failing, invalid base64 data") ErrUnsupportedContentType = errors.New("serverops: unsupported content type for decoding") ErrReadingRequestBody = errors.New("serverops: failed to read request body") ErrMalformedContentType = errors.New("serverops: malformed Content-Type header") )
var ( ErrInvalidParameterValue = errors.New("serverops: invalid parameter value type") ErrBadPathValue = errors.New("serverops: bad path value") ErrBadQueryValue = errors.New("serverops: bad query value") ErrImmutableModel = errors.New("serverops: immutable model") ErrImmutableGroup = errors.New("serverops: immutable group") ErrMissingParameter = errors.New("serverops: missing parameter") ErrEmptyRequest = errors.New("serverops: empty request") ErrEmptyRequestBody = errors.New("serverops: empty request body") ErrInvalidChain = errors.New("serverops: invalid chain definition") ErrBadRequest = errors.New("serverops: bad request") ErrUnprocessableEntity = errors.New("serverops: unprocessable entity") ErrNotFound = errors.New("serverops: not found") ErrConflict = errors.New("serverops: conflict") ErrForbidden = errors.New("serverops: forbidden") ErrInternalServerError = errors.New("serverops: internal server error") ErrUnsupportedMediaType = errors.New("serverops: unsupported media type") ErrFileSizeLimitExceeded = errors.New("serverops: file size limit exceeded") ErrFileEmpty = errors.New("serverops: file cannot be empty") )
Functions ¶
func EnforceToken ¶ added in v0.0.17
func GetErrorParam ¶ added in v0.28.2
func GetPathParam ¶ added in v0.28.2
GetPathParam retrieves a URL path parameter by name and is used to enforce that all path parameters are documented for the OpenAPI generator.
func GetQueryParam ¶ added in v0.28.2
GetQueryParam retrieves a URL query parameter by name. If the parameter is not present, it returns the provided defaultValue.
func HandleAPIError ¶ added in v0.0.4
HandleAPIError processes OpenAI-compatible API error responses.
func IsAPIError ¶ added in v0.0.4
Types ¶
type APIError ¶ added in v0.0.4
type APIError struct {
// contains filtered or unexported fields
}
APIError wraps an error with parameter context for API responses.
func BadPathValue ¶ added in v0.28.2
func BadRequest ¶ added in v0.28.2
func FileSizeLimitExceeded ¶ added in v0.28.2
func ImmutableGroup ¶ added in v0.28.2
func ImmutableModel ¶ added in v0.28.2
func InternalServerError ¶ added in v0.28.2
func InvalidChain ¶ added in v0.28.2
func InvalidParameterValue ¶ added in v0.28.2
func MissingParameter ¶ added in v0.28.2
func NewAPIError ¶ added in v0.28.2
func Unauthorized ¶ added in v0.28.2
func UnprocessableEntity ¶ added in v0.28.2
func UnsupportedMediaType ¶ added in v0.28.2
type AboutServer ¶ added in v0.0.25
type ContextKey ¶ added in v0.0.17
type ContextKey string
const (
ContextTokenKey ContextKey = "token"
)
type MessageResponse ¶ added in v0.28.2
type MessageResponse struct {
Message string `json:"message"`
}
MessageResponse is the preferred success body for simple endpoints that only need to return a human-readable message without introducing a route-specific DTO shape.