middleware

package
v0.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 11, 2020 License: MIT Imports: 19 Imported by: 0

Documentation

Overview

Package middleware provides http middleware

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func GrantAccessFor

func GrantAccessFor(role identity.Role) func(next http.Handler) http.Handler

GrantAccessFor returns Status Unauthorized if Identity is not set within request's context or user does not have required role

func HSTS

func HSTS() gorouter.MiddlewareFunc

HSTS HTTP Strict Transport Security is an opt-in security enhancement that is specified by a web application through the use of a special response header

Example
package main

import (
	"fmt"
	"net/http"
	"net/http/httptest"

	"github.com/vardius/go-api-boilerplate/pkg/http/middleware"
)

func main() {
	m := middleware.HSTS()
	h := m(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {}))

	w := httptest.NewRecorder()
	req, _ := http.NewRequest("GET", "/", nil)

	h.ServeHTTP(w, req)

	fmt.Printf("%s\n", w.Header().Get("Strict-Transport-Security"))

}
Output:

max-age=63072000; includeSubDomains

func LimitRequestBody

func LimitRequestBody(n int64) gorouter.MiddlewareFunc

LimitRequestBody limits the request body

func Logger

func Logger(logger *log.Logger) gorouter.MiddlewareFunc

Logger wraps http.Handler with a logger middleware

Example
package main

import (
	"net/http"
	"net/http/httptest"

	"github.com/vardius/go-api-boilerplate/pkg/http/middleware"
	"github.com/vardius/go-api-boilerplate/pkg/log"
)

func main() {
	m := middleware.Logger(log.New("development"))
	h := m(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {}))

	w := httptest.NewRecorder()
	req, _ := http.NewRequest("GET", "/", nil)

	h.ServeHTTP(w, req)
}
Output:

func Metrics

func Metrics() gorouter.MiddlewareFunc

Metrics updates program counters.

func RateLimit

func RateLimit(logger *log.Logger, r rate.Limit, b int, frequency time.Duration) gorouter.MiddlewareFunc

RateLimit returns a new HTTP middleware that allows request per visitor (IP) up to rate r and permits bursts of at most b tokens.

func Recover

func Recover(logger *log.Logger) gorouter.MiddlewareFunc

Recover middleware recovers from panic

Example
package main

import (
	"net/http"
	"net/http/httptest"

	"github.com/vardius/go-api-boilerplate/pkg/http/middleware"
	"github.com/vardius/go-api-boilerplate/pkg/log"
)

func main() {
	m := middleware.Recover(log.New("development"))
	handler := m(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		panic("error")
	}))

	// We will mock request for this example
	w := httptest.NewRecorder()
	req, _ := http.NewRequest("GET", "/", nil)

	handler.ServeHTTP(w, req)
}
Output:

func WithContainer

func WithContainer(requestContainer gocontainer.Container) gorouter.MiddlewareFunc

WithContainer wraps http.Handler with a container middleware

func WithMetadata

func WithMetadata() gorouter.MiddlewareFunc

WithMetadata adds Metadata to requests context

func XSS

func XSS() gorouter.MiddlewareFunc

XSS sets xss response header types

Example
package main

import (
	"fmt"
	"net/http"
	"net/http/httptest"

	"github.com/vardius/go-api-boilerplate/pkg/http/middleware"
)

func main() {
	m := middleware.XSS()
	h := m(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {}))

	w := httptest.NewRecorder()
	req, _ := http.NewRequest("GET", "/", nil)

	h.ServeHTTP(w, req)

	fmt.Printf("%s\n", w.Header().Get("X-Content-Type-Options"))
	fmt.Printf("%s\n", w.Header().Get("X-Frame-Options"))

}
Output:

nosniff
DENY

Types

This section is empty.

Directories

Path Synopsis
Package authenticator provides allows to authorize request
Package authenticator provides allows to authorize request

Jump to

Keyboard shortcuts

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