restful

package
v0.0.0-...-adf2f75 Latest Latest
Warning

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

Go to latest
Published: May 2, 2024 License: Apache-2.0 Imports: 17 Imported by: 4

Documentation

Index

Constants

View Source
const (
	ParamImport = "import"
	ParamExport = "export"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AbstractResource

type AbstractResource struct {
	Logger   logger.Logger
	Resource Resource
	// contains filtered or unexported fields
}

AbstractResource is base for resources

func NewAbstractResource

func NewAbstractResource(name string, resourceMethods []ResourceMethod) *AbstractResource

NewAbstractResource creates a new AbstractResource

func (*AbstractResource) Create

func (ar *AbstractResource) Create(request *http.Request) (string, Attributes, error)

Create a resource

func (*AbstractResource) Delete

func (ar *AbstractResource) Delete(request *http.Request, id string) error

Delete a resource

func (*AbstractResource) ExtendMiddlewares

func (ar *AbstractResource) ExtendMiddlewares() error

ExtendMiddlewares extends specific resource middlewares

func (*AbstractResource) GetAll

func (ar *AbstractResource) GetAll(request *http.Request) (map[string]Attributes, error)

GetAll returns all instances for resources with multiple instances

func (*AbstractResource) GetByID

func (ar *AbstractResource) GetByID(request *http.Request, id string) (Attributes, error)

GetByID return specific instance by ID

func (*AbstractResource) GetCustomRoutes

func (ar *AbstractResource) GetCustomRoutes() ([]CustomRoute, error)

GetCustomRoutes returns a list of custom routes for the resource

func (*AbstractResource) GetName

func (ar *AbstractResource) GetName() string

GetName returns the resource name

func (*AbstractResource) GetRouter

func (ar *AbstractResource) GetRouter() chi.Router

GetRouter returns raw routes, those that don't return an attribute

func (*AbstractResource) GetRouterURLParam

func (ar *AbstractResource) GetRouterURLParam(request *http.Request, paramKey string) string

GetRouterURLParam returns the router parameters values by key. e.g.: `/endpoint/{id} -> "value of id"

func (*AbstractResource) GetServer

func (ar *AbstractResource) GetServer() Server

GetServer returns the server

func (*AbstractResource) GetURLParamBoolOrDefault

func (ar *AbstractResource) GetURLParamBoolOrDefault(request *http.Request, paramKey string, defaultValue bool) bool

func (*AbstractResource) GetURLParamFloatOrDefault

func (ar *AbstractResource) GetURLParamFloatOrDefault(request *http.Request, paramKey string, defaultValue float64) float64

func (*AbstractResource) GetURLParamInt64OrDefault

func (ar *AbstractResource) GetURLParamInt64OrDefault(request *http.Request, paramKey string, defaultValue int64) int64

func (*AbstractResource) GetURLParamStringOrDefault

func (ar *AbstractResource) GetURLParamStringOrDefault(request *http.Request, paramKey string, defaultValue string) string

func (*AbstractResource) GetURLParamUint64OrDefault

func (ar *AbstractResource) GetURLParamUint64OrDefault(request *http.Request, paramKey string, defaultValue uint64) uint64

func (*AbstractResource) GetURLParamValue

func (ar *AbstractResource) GetURLParamValue(paramKey string, request *http.Request) interface{}

func (*AbstractResource) GetURLParamValues

func (ar *AbstractResource) GetURLParamValues(paramKey string, request *http.Request) []interface{}

func (*AbstractResource) Initialize

func (ar *AbstractResource) Initialize(parentLogger logger.Logger, server Server) (chi.Router, error)

Initialize initializes the resource

func (*AbstractResource) OnAfterInitialize

func (ar *AbstractResource) OnAfterInitialize() error

OnAfterInitialize is called after initialization

func (*AbstractResource) Patch

func (ar *AbstractResource) Patch(request *http.Request, id string) error

Patch a resource

func (*AbstractResource) Register

func (ar *AbstractResource) Register(registry *registry.Registry)

Register registers a registry

func (*AbstractResource) Update

func (ar *AbstractResource) Update(request *http.Request, id string) (Attributes, error)

Update a resource

type AbstractServer

type AbstractServer struct {
	Logger        logger.Logger
	Enabled       bool
	ListenAddress string
	Router        chi.Router
	// contains filtered or unexported fields
}

func NewAbstractServer

func NewAbstractServer(parentLogger logger.Logger,
	resourceRegistry *registry.Registry,
	server Server) (*AbstractServer, error)

func (*AbstractServer) Initialize

func (s *AbstractServer) Initialize(configuration *platformconfig.WebServer) error

func (*AbstractServer) InstallMiddleware

func (s *AbstractServer) InstallMiddleware(router chi.Router) error

func (*AbstractServer) Start

func (s *AbstractServer) Start() error

type Attributes

type Attributes map[string]interface{}

Attributes are resource attributes

type CustomRoute

type CustomRoute struct {
	Stream          bool
	Pattern         string
	Method          string
	RouteFunc       CustomRouteFunc
	StreamRouteFunc CustomRouteFuncStream
}

CustomRoute is a custom route definition

type CustomRouteFunc

type CustomRouteFunc func(*http.Request) (*CustomRouteFuncResponse, error)

CustomRouteFunc is a handler function for a custom route

type CustomRouteFuncResponse

type CustomRouteFuncResponse struct {
	ResourceType string
	Resources    map[string]Attributes
	Headers      map[string]string
	// Whether or not the resources should be treated as a single resource (if
	// false, will be returned as list)
	Single     bool
	StatusCode int
}

CustomRouteFuncResponse is what CustomRouteFunc returns

type CustomRouteFuncStream

type CustomRouteFuncStream func(*http.Request) (*CustomRouteFuncStreamResponse, error)

CustomRouteFuncStream is a handler function for a custom route server stream response

type CustomRouteFuncStreamResponse

type CustomRouteFuncStreamResponse struct {
	Headers       map[string]string
	StatusCode    int
	ForceFlush    bool
	FlushInternal time.Duration
	ReadCloser    io.ReadCloser
}

CustomRouteFuncStreamResponse is what CustomRouteFuncStream returns

type Encoder

type Encoder interface {

	// encode a single resource
	EncodeResource(string, Attributes)

	// encode multiple resources
	EncodeResources(map[string]Attributes)
}

type EncoderFactory

type EncoderFactory interface {

	// create an encoder
	NewEncoder(http.ResponseWriter, string) Encoder
}

type ErrorContainsVerifier

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

ErrorContainsVerifier verifies contents of returned errors

func NewErrorContainsVerifier

func NewErrorContainsVerifier(logger logger.Logger, expectedStrings []string) *ErrorContainsVerifier

NewErrorContainsVerifier returns a new ErrorContainsVerifier

func (*ErrorContainsVerifier) Verify

func (ecv *ErrorContainsVerifier) Verify(response map[string]interface{}) bool

Verify verifies that the returned response contains the given errors

type JSONAPIEncoderFactory

type JSONAPIEncoderFactory struct{}

func (*JSONAPIEncoderFactory) NewEncoder

func (jaef *JSONAPIEncoderFactory) NewEncoder(responseWriter http.ResponseWriter, resourceType string) Encoder

type JSONEncoderFactory

type JSONEncoderFactory struct{}

func (*JSONEncoderFactory) NewEncoder

func (jef *JSONEncoderFactory) NewEncoder(responseWriter http.ResponseWriter, resourceType string) Encoder

type Resource

type Resource interface {

	// Initialize the concrete server
	Initialize(logger.Logger, Server) (chi.Router, error)

	// ExtendMiddlewares extends router middlewares
	ExtendMiddlewares() error

	// OnAfterInitialize Called after initialization
	OnAfterInitialize() error

	// GetCustomRoutes returns a list of custom routes for the resource
	GetCustomRoutes() ([]CustomRoute, error)

	// GetAll returns all instances for resources with multiple instances
	GetAll(request *http.Request) (map[string]Attributes, error)

	// GetByID returns a specific instance by ID
	GetByID(request *http.Request, id string) (Attributes, error)

	// Create returns a resource ID, attributes
	Create(request *http.Request) (string, Attributes, error)

	// Update returns attributes (optionally)
	Update(request *http.Request, id string) (Attributes, error)

	// Delete deletes an entity
	Delete(request *http.Request, id string) error

	// Patch delete an entity
	Patch(request *http.Request, id string) error
}

Resource interface

type ResourceMethod

type ResourceMethod int

ResourceMethod is the method of the resource

const (
	ResourceMethodGetList ResourceMethod = iota
	ResourceMethodGetDetail
	ResourceMethodCreate
	ResourceMethodUpdate
	ResourceMethodDelete
	ResourceMethodPatch
)

Possible resource methods

type Server

type Server interface {

	// Initialize initialized server
	Initialize(configuration *platformconfig.WebServer) error

	// InstallMiddleware installs middlewares on a router
	InstallMiddleware(router chi.Router) error

	// Start running the server
	Start() error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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