server

package module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2022 License: MIT Imports: 18 Imported by: 0

README

Go Server Last release Documentation

Go Report Card

Branch Status Coverage
master Build Status Coveralls

HTTP Server Router with middleware

Example

import "github.com/euskadi31/go-server"

router := server.NewRouter()

router.EnableMetrics()
router.EnableCors()
router.EnableHealthCheck()

router.AddHealthCheck("my-health-check", NewMyHealthCheck())

router.Use(MyMiddleWare())

router.AddController(MyController())

panic(http.ListenAndServe(":1337", router))

License

go-server is licensed under the MIT license.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultCurvePreferences defines the recommended elliptic curves for modern TLS
	DefaultCurvePreferences = []tls.CurveID{
		tls.CurveP256,
		tls.X25519,
	}

	// DefaultCipherSuites defines the recommended cipher suites for modern TLS
	DefaultCipherSuites = []uint16{
		tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
		tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
		tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
		tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
		tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
		tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
	}

	// DefaultMinVersion defines the recommended minimum version to use for the TLS protocol (1.2)
	DefaultMinVersion uint16 = tls.VersionTLS12

	// DefaultReadTimeout sets the maximum time a client has to fully stream a request (5s)
	DefaultReadTimeout = 5 * time.Second
	// DefaultWriteTimeout sets the maximum amount of time a handler has to fully process a request (10s)
	DefaultWriteTimeout = 10 * time.Second
	// DefaultIdleTimeout sets the maximum amount of time a Keep-Alive connection can remain idle before
	// being recycled (120s)
	DefaultIdleTimeout = 120 * time.Second

	// DefaultShutdownTimeout sets the maximum amount of time a shutdown
	DefaultShutdownTimeout = 2 * time.Second
)

see https://blog.cloudflare.com/exposing-go-on-the-internet/

Functions

This section is empty.

Types

type Configuration

type Configuration struct {
	HTTP              *HTTPConfiguration
	HTTPS             *HTTPSConfiguration
	ShutdownTimeout   time.Duration
	WriteTimeout      time.Duration
	ReadTimeout       time.Duration
	ReadHeaderTimeout time.Duration
	IdleTimeout       time.Duration
	Profiling         bool
	Metrics           bool
	HealthCheck       bool
}

Configuration struct

func ConfigurationWithDefault

func ConfigurationWithDefault(cfg *Configuration) *Configuration

ConfigurationWithDefault return Configuration with default parameters

func (Configuration) IsEnabled

func (c Configuration) IsEnabled(protocol string) bool

IsEnabled check if protocol is enabled

type Controller

type Controller interface {
	Mount(r *Router)
}

Controller interface

type HTTPConfiguration

type HTTPConfiguration struct {
	Host string
	Port int
}

HTTPConfiguration struct

func (HTTPConfiguration) Addr

func (c HTTPConfiguration) Addr() string

Addr string

func (HTTPConfiguration) IsEnabled

func (c HTTPConfiguration) IsEnabled() bool

IsEnabled check if HTTP is enabled

type HTTPSConfiguration

type HTTPSConfiguration struct {
	Host      string
	Port      int
	TLSConfig *tls.Config
	CertFile  string
	KeyFile   string
}

HTTPSConfiguration struct

func (HTTPSConfiguration) Addr

func (c HTTPSConfiguration) Addr() string

Addr string

func (HTTPSConfiguration) IsEnabled

func (c HTTPSConfiguration) IsEnabled() bool

IsEnabled check if HTTP is enabled

type HealthCheckHandler

type HealthCheckHandler interface {
	Check() bool
}

HealthCheckHandler type

type HealthCheckHandlerFunc

type HealthCheckHandlerFunc func() bool

HealthCheckHandlerFunc handler

func (HealthCheckHandlerFunc) Check

func (f HealthCheckHandlerFunc) Check() bool

Check calls f().

type HealthCheckResponse

type HealthCheckResponse struct {
	Status   bool            `json:"status"`
	Services map[string]bool `json:"services"`
}

HealthCheckResponse struct

type MockHealthCheckHandler

type MockHealthCheckHandler struct {
	mock.Mock
}

MockHealthCheckHandler is an autogenerated mock type for the HealthCheckHandler type

func (*MockHealthCheckHandler) Check

func (_m *MockHealthCheckHandler) Check() bool

Check provides a mock function with given fields:

type Router

type Router struct {
	*mux.Router
	// contains filtered or unexported fields
}

Router struct

func NewRouter

func NewRouter() *Router

NewRouter constructor

func (*Router) AddController

func (r *Router) AddController(controller Controller)

AddController to Router

func (*Router) AddHealthCheck

func (r *Router) AddHealthCheck(name string, handle HealthCheckHandler) error

AddHealthCheck handler

func (*Router) AddPrefixRoute

func (r *Router) AddPrefixRoute(prefix string, handler http.Handler) *mux.Route

AddPrefixRoute to Router Deprecated: Use server.PathPrefix(prefix).Handler() instead.

func (*Router) AddPrefixRouteFunc

func (r *Router) AddPrefixRouteFunc(prefix string, handler http.HandlerFunc) *mux.Route

AddPrefixRouteFunc to Router Deprecated: Use server.PathPrefix(prefix).HandlerFunc() instead.

func (*Router) AddRoute

func (r *Router) AddRoute(path string, handler http.Handler) *mux.Route

AddRoute to Router Deprecated: Use server.Handle() instead.

func (*Router) AddRouteFunc

func (r *Router) AddRouteFunc(path string, handler http.HandlerFunc) *mux.Route

AddRouteFunc to Router Deprecated: Use server.HandleFunc() instead.

func (*Router) EnableCors

func (r *Router) EnableCors()

EnableCors for all endpoint

func (*Router) EnableCorsWithOptions

func (r *Router) EnableCorsWithOptions(options cors.Options)

EnableCorsWithOptions for all endpoint

func (*Router) EnableHealthCheck

func (r *Router) EnableHealthCheck()

EnableHealthCheck endpoint

func (*Router) EnableMetrics

func (r *Router) EnableMetrics()

EnableMetrics endpoint

func (*Router) EnableProfiling

func (r *Router) EnableProfiling()

EnableProfiling with pprof

func (*Router) EnableProxy

func (r *Router) EnableProxy()

EnableProxy for populating r.RemoteAddr and r.URL.Scheme based on the X-Forwarded-For, X-Real-IP, X-Forwarded-Proto and RFC7239 Forwarded headers when running a Go server behind a HTTP reverse proxy.

func (*Router) EnableRecovery

func (r *Router) EnableRecovery()

EnableRecovery for all endpoint

func (*Router) SetNotFound

func (r *Router) SetNotFound(handler http.Handler)

SetNotFound handler

func (*Router) SetNotFoundFunc

func (r *Router) SetNotFoundFunc(handler http.HandlerFunc)

SetNotFoundFunc handler

type Server

type Server struct {
	*Router
	// contains filtered or unexported fields
}

Server struct

func New

func New(cfg *Configuration) *Server

New Server

func (*Server) Run

func (s *Server) Run() (err error)

Run Server

func (*Server) Shutdown

func (s *Server) Shutdown() (err error)

Shutdown server

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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