Documentation
¶
Overview ¶
Package restapi Rednerd API
The Rednerd rendering server. For a list of available rendering engines and their options, see <a href="/docs/engines">Rednerd Engines</a>. Schemes: http https Host: localhost BasePath: /api Version: 0.10.0 Consumes: - application/io.orus.rednerd.v1+json - application/json Produces: - application/io.orus.rednerd.v1+json
swagger:meta
Index ¶
- Variables
- func AddAPIConfigurator(cfg APIConfigurator)
- func AddMiddleware(f func(http.Handler) http.Handler)
- func AuthMiddleware(auth *auth.Auth, db *sqlx.DB, log zerolog.Logger) func(http.Handler) http.Handler
- func CatchPanics(next http.Handler) http.Handler
- func EngineDoc(path string, registry *rendering.EngineRegistry, ...) func(http.Handler) http.Handler
- func GetFlatSwaggerJSON() json.RawMessage
- func GetSwaggerJSON() json.RawMessage
- func GetVersion() string
- func Prometheus(path string) func(next http.Handler) http.Handler
- func Redoc(opts RedocOpts) func(http.Handler) http.Handler
- func TimeoutHandler(dt time.Duration) func(http.Handler) http.Handler
- type APIConfig
- type APIConfigurator
- type RedocOpts
- type Server
- func (s *Server) ConfigureAPI()
- func (s *Server) ConfigureFlags()
- func (s *Server) Fatalf(f string, args ...interface{})
- func (s *Server) GetHandler() http.Handler
- func (s *Server) HTTPListener() (net.Listener, error)
- func (s *Server) Listen() error
- func (s *Server) Logf(f string, args ...interface{})
- func (s *Server) Serve() error
- func (s *Server) SetAPI(api *operations.RednerdAPI)
- func (s *Server) SetHandler(handler http.Handler)
- func (s *Server) SetLog(log zerolog.Logger)
- func (s *Server) Shutdown() error
- func (s *Server) TLSListener() (net.Listener, error)
- func (s *Server) UnixListener() (net.Listener, error)
Constants ¶
This section is empty.
Variables ¶
var ( // SwaggerJSON embedded version of the swagger document used at generation time SwaggerJSON json.RawMessage // FlatSwaggerJSON embedded flattened version of the swagger document used at generation time FlatSwaggerJSON json.RawMessage )
var ( ErrNoAPISet = errors.New("can't create the default handler, as no api is set") ErrParseCACertificate = errors.New("cannot parse CA certificate") ErrMissingFlags = errors.New("flags not specified") ErrNoCertificate = errors.New("no certificate was configured for TLS") )
var ( VCSCommit string VersionTag = "dev" )
Functions ¶
func AddAPIConfigurator ¶
func AddAPIConfigurator(cfg APIConfigurator)
func AuthMiddleware ¶
func AuthMiddleware(auth *auth.Auth, db *sqlx.DB, log zerolog.Logger) func(http.Handler) http.Handler
AuthMiddleware authenticates the user.
func CatchPanics ¶
CatchPanics catches the panics and log them as errors.
func EngineDoc ¶
func EngineDoc( path string, registry *rendering.EngineRegistry, templateRegistry *rendering.TemplateEngineRegistry, log zerolog.Logger, ) func(http.Handler) http.Handler
EngineDoc publish the engines documentations on the given path.
func GetFlatSwaggerJSON ¶
func GetFlatSwaggerJSON() json.RawMessage
func GetSwaggerJSON ¶
func GetSwaggerJSON() json.RawMessage
func Prometheus ¶
Prometheus serves the '/metrics' endpoint.
func Redoc ¶
Redoc creates a middleware to serve a documentation site for a swagger spec. This allows for altering the spec before starting the http listener.
Types ¶
type APIConfig ¶
type APIConfig struct { Context context.Context Log zerolog.Logger DB *sqlx.DB Now func() time.Time RenderingEngineRegistry *rendering.EngineRegistry TemplateRenderingEngineRegistry *rendering.TemplateEngineRegistry BaseURL string TokenOptions *auth.TokenOptions }
APIConfig holds the configuration options for the API.
func (APIConfig) ConfigureAPI ¶
func (config APIConfig) ConfigureAPI(s *Server, api *operations.RednerdAPI) http.Handler
ConfigureAPI setup the api.
type APIConfigurator ¶
type APIConfigurator func(config APIConfig, auth *auth.Auth, api *operations.RednerdAPI, rdr *redner.Renderer) error
type RedocOpts ¶
type RedocOpts struct { // BasePath for the UI path, defaults to: / BasePath string // Path combines with BasePath for the full UI path, defaults to: docs Path string // SpecURL the url to find the spec for SpecURL string // RedocURL for the js that generates the redoc site, defaults to: https://rebilly.github.io/ReDoc/releases/latest/redoc.min.js RedocURL string // Title for the documentation site, default to: API documentation Title string }
RedocOpts configures the Redoc middlewares.
type Server ¶
type Server struct { EnabledListeners []string `long:"scheme" description:"the listeners to enable, this can be repeated and defaults to the schemes in the swagger spec"` CleanupTimeout time.Duration `long:"cleanup-timeout" description:"grace period for which to wait before killing idle connections" default:"10s"` GracefulTimeout time.Duration `long:"graceful-timeout" description:"grace period for which to wait before shutting down the server" default:"15s"` MaxHeaderSize flagext.ByteSize `` /* 231-byte string literal not displayed */ SocketPath flags.Filename `long:"socket-path" description:"the unix socket to listen on" default:"/var/run/rednerd.sock"` Host string `long:"host" description:"the IP to listen on" default:"localhost" env:"HOST"` Port int `long:"port" description:"the port to listen on for insecure connections, defaults to a random value" env:"PORT"` ListenLimit int `long:"listen-limit" description:"limit the number of outstanding requests"` KeepAlive time.Duration `` /* 169-byte string literal not displayed */ ReadTimeout time.Duration `long:"read-timeout" description:"maximum duration before timing out read of the request" default:"30s"` WriteTimeout time.Duration `long:"write-timeout" description:"maximum duration before timing out write of the response" default:"60s"` TLSHost string `long:"tls-host" description:"the IP to listen on for tls, when not specified it's the same as --host" env:"TLS_HOST"` TLSPort int `long:"tls-port" description:"the port to listen on for secure connections, defaults to a random value" env:"TLS_PORT"` TLSCertificate flags.Filename `long:"tls-certificate" description:"the certificate to use for secure connections" env:"TLS_CERTIFICATE"` TLSCertificateKey flags.Filename `long:"tls-key" description:"the private key to use for secure connections" env:"TLS_PRIVATE_KEY"` TLSCACertificate flags.Filename `long:"tls-ca" description:"the certificate authority file to be used with mutual tls auth" env:"TLS_CA_CERTIFICATE"` TLSListenLimit int `long:"tls-listen-limit" description:"limit the number of outstanding requests"` TLSKeepAlive time.Duration `` /* 160-byte string literal not displayed */ TLSReadTimeout time.Duration `long:"tls-read-timeout" description:"maximum duration before timing out read of the request"` TLSWriteTimeout time.Duration `long:"tls-write-timeout" description:"maximum duration before timing out write of the response"` Prometheus bool `long:"prometheus" description:"enable prometheus metrics on /metrics"` APIConfigurator func(s *Server, api *operations.RednerdAPI) http.Handler // contains filtered or unexported fields }
Server for the rednerd API.
func NewServer ¶
func NewServer(api *operations.RednerdAPI) *Server
NewServer creates a new api rednerd server but does not configure it.
func (*Server) ConfigureAPI ¶
func (s *Server) ConfigureAPI()
ConfigureAPI configures the API and handlers.
func (*Server) ConfigureFlags ¶
func (s *Server) ConfigureFlags()
ConfigureFlags configures the additional flags defined by the handlers. Needs to be called before the parser.Parse.
func (*Server) Fatalf ¶
Fatalf logs message either via defined user logger or via system one if no user logger is defined. Exits with non-zero status after printing.
func (*Server) GetHandler ¶
GetHandler returns a handler useful for testing.
func (*Server) HTTPListener ¶
HTTPListener returns the http listener.
func (*Server) Listen ¶
Listen creates the listeners for the server.
func (*Server) Logf ¶
Logf logs message either via defined user logger or via system one if no user logger is defined.
func (*Server) SetAPI ¶
func (s *Server) SetAPI(api *operations.RednerdAPI)
SetAPI configures the server with the specified API. Needs to be called before Serve.
func (*Server) SetHandler ¶
SetHandler allows for setting a http handler on this server.
func (*Server) TLSListener ¶
TLSListener returns the https listener.
Source Files
¶
- auth_middleware.go
- configure_rednerd.go
- doc.go
- embedded_spec.go
- enginedoc.go
- panic_middleware.go
- prometheus_middleware.go
- redoc_middleware.go
- server_.go
- timeout_handler.go
- version.go