cego

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2026 License: MIT Imports: 11 Imported by: 0

README

actions license Renovate

Quality Gate Status Maintainability Rating Reliability Rating Security Rating

Coverage Code Smells

Using Logger

logger := cego.NewLogger()

logger.Debug("Very nice")

err := error.Error("An error")
logger.Error("An error occurred in readme", cego.GetSlogAttrFromError(err))

handleFunc := func(writer http.ResponseWriter, request *http.Request) {
    logger.Debug("Very nice", cego.GetSlogAttrFromRequest(request))
}

// Setting your logger as the global one
logger := log.NewLogger()
slog.SetDefault(logger)
slog.Debug("Also in ecs format")

Using Renderer with builtin logging

logger := cego.NewLogger()
renderer := cego.NewRenderer(logger)
handleFunc := func(writer http.ResponseWriter, request *http.Request) {
    renderer.Text(w, http.StatusOK, "Action package excitement !!!")
}

Using ForwardAuthHandler

Use builtin http client (timeout 10s)

mux := http.NewServeMux()
forwardAuth := cego.NewForwardAuth(logger, "https://sso.example.com/auth", "myservice.example.com")

mux.Handle("/data", forwardAuth.Handler(reverseProxy))
mux.Handle("/data", forwardAuth.HandlerFunc(func (w http.ResponseWrite, req *http.Request) {
	_,_ = w.Write()
}))

Bring your own http client

mux := http.NewServeMux()
httpClient := &http.Client{Timeout: time.Duration(1) * time.Second}
forwardAuth := cego.NewForwardAuth(logger, "https://sso.example.com/auth", "myservice.example.com", cego.ForwardAuthWithHTTPClient(httpClient))

mux.Handle("/data", forwardAuth.Handler(reverseProxy))
mux.Handle("/data", forwardAuth.HandlerFunc(func (w http.ResponseWrite, req *http.Request) {
	_,_ = w.Write()
}))

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetSlogAttrFromError added in v1.2.0

func GetSlogAttrFromError(err error) slog.Attr

func GetSlogAttrFromRequest added in v1.0.0

func GetSlogAttrFromRequest(req *http.Request) slog.Attr

Types

type ForwardAuth added in v1.0.0

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

func NewForwardAuth added in v1.0.0

func NewForwardAuth(logger Logger, forwardAuthUrl string, forwardAuthXForwardedHost string, opts ...OptionsForwardAuthFunc) *ForwardAuth

func (*ForwardAuth) Handler added in v1.0.0

func (f *ForwardAuth) Handler(handler http.Handler) http.Handler

func (*ForwardAuth) HandlerFunc added in v1.0.0

func (f *ForwardAuth) HandlerFunc(handlerFunc http.HandlerFunc) http.Handler

type Logger

type Logger interface {
	Debug(message string, args ...any)
	Info(message string, args ...any)
	Error(message string, args ...any)
}

func NewLogger

func NewLogger() Logger

type MockLogger

type MockLogger struct {
	mock.Mock
}

func NewMockLogger

func NewMockLogger() *MockLogger

func (*MockLogger) Debug

func (l *MockLogger) Debug(message string, args ...any)

func (*MockLogger) Error

func (l *MockLogger) Error(message string, args ...any)

func (*MockLogger) Info

func (l *MockLogger) Info(message string, args ...any)

type OptionsForwardAuthFunc added in v1.0.0

type OptionsForwardAuthFunc func(f *ForwardAuth)

func ForwardAuthWithHTTPClient added in v1.2.0

func ForwardAuthWithHTTPClient(httpClient *http.Client) OptionsForwardAuthFunc

type Renderer

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

func NewRenderer

func NewRenderer(logger Logger) *Renderer

func (*Renderer) Data

func (r *Renderer) Data(writer http.ResponseWriter, status int, bytes []byte, contentType string)

func (*Renderer) JSON

func (r *Renderer) JSON(writer http.ResponseWriter, status int, data interface{})

func (*Renderer) Text

func (r *Renderer) Text(writer http.ResponseWriter, status int, text string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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