package
8.2.2+incompatible
Repository: https://github.com/lucbarr/extensions.git
Documentation: pkg.go.dev

# README

Usage example

oauth2 authenticator

	import (
		"github.com/topfreegames/extensions/oauth2"
		o2 "golang.org/x/oauth2"
	)

	authenticator := oauth2.Google(
		&oauth2.PGTokenStorage{
			TableName: "oauth2_tokens",
			DB:        a.DB,
		},
	).
		ClientID(a.Config.GetString("oauth2.clientID")).
		ClientSecret(a.Config.GetString("oauth2.clientSecret")).
		RedirectURL(a.Config.GetString("oauth2.redirectURL")).
		AllowedEmailDomains(
			a.Config.GetStringSlice("oauth2.allowedEmailDomains")...,
		).
		AuthCodeOptions(o2.AccessTypeOffline, o2.ApprovalForce)
}

*mux.Router

	r := mux.NewRouter()
	r.Use(middleware.Version(models.AppInfo.Version))
	r.Use(middleware.Logging(a.Logger))
	r.Use(middleware.Metrics(a.MetricsReporter))
	r.Use(middleware.DB(a.DB))
	r.Use(
		middleware.OAuth2(
			config.GetBool("oauth2.enabled"),
			a.configureAuthenticator(),
			middleware.OAuth2Paths{
				Whitelist: []string{"/healthcheck"},
				Login:     "/login",
				Logout:    "/logout",
			},
		),
	)

	r.Handle("/healthcheck", Chain(
		NewHealthcheckHandler(a),
	)).Methods("GET").Name("healthcheck")

	r.HandleFunc("/login", BlankHandler).Methods("GET").Name("login")
	r.HandleFunc("/logout", BlankHandler).Methods("GET").Name("logout")

# Packages

Package mocks is a generated GoMock package.

# Functions

BodyParser middleware.
Chain applies middlewares to a http.HandlerFunc.
DB middleware.
GetBody returns a pginterfaces.DB from context.
GetDB returns a pginterfaces.DB from context.
GetLogger returns a logrus.FieldLogger from context.
GetMetricsReporter returns a MetricsReporter from context.
GetStatusCode tries to get the StatusCode of a WrappedResponseWriter.
Jaeger is a middleware for tracing.
Logging middleware.
Metrics middleware.
NewDogStatsD ctor.
NewMetricsReporter ctor.
NewResponseWriter ctor.
OAuth2 middleware.
SetLogger returns a context with a logrus.FieldLogger set.
UseResponseWriter wraps a handler with a middleware.ResponseWriter.
Validator middleware.
Version middleware.

# Variables

MetricTypes constants.

# Structs

DogStatsD metrics reporter struct.
OAuth2Paths describe paths used by OAuth2 middleware.
ResponseWriter is a wrapper around http.ResponseWriter.

# Interfaces

MetricsReporter interface.