anansi

package module
v0.10.1 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2020 License: MIT Imports: 29 Imported by: 0

README

anansi

Helper tools for go-chi

Features

  • API Errors
  • Logging Middleware
  • Session Store
  • Encryption Helpers
  • JSON request and body parsing
  • Extensions of faker

Install

go get -u github.com/tsaron/ansi

Example


// embed basic env in your env struct
type AppEnv struct {
    anansi.BasicEnv
}

type Book struct {
    Name `json:"book_nme"`
}

func main() {
    // BasicEnv is only compatible with envconfig ATM
    env := loadEnv()
    logs := NewLogger(env.Name)

    router := chi.NewRouter()
    chix.DefaultMiddleware(env, log, router)
    router.Get("/api/v1/books/:id", func(w http.ResponseWriter, r *http.Request) {

    })

}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrAuthorisationFormat = errors.New("Your authorization header format is invalid")
	ErrUnsupportedScheme   = errors.New("Your scheme is not supported")
	ErrEmptyToken          = errors.New("There was no token supplied to the authorization header")
	ErrHeaderNotSet        = errors.New("Authorization header is not set")
)
View Source
var DumpLog = regexp.MustCompile("(?i)kube-probe|prometheus")
View Source
var ISO_FORMATS = [3]string{"2006-01-02T15:04:05.000Z", "2006-01-02", "2006-01-02T15:04:05"}

Functions

func Decrypt added in v0.8.0

func Decrypt(secret []byte, encrypted string) ([]byte, error)

Decrypt decrypts a string using secretbox

func Encrypt added in v0.8.0

func Encrypt(secret []byte, value []byte) (string, error)

Encrypt encrypts a string using secretbox

func IDParam

func IDParam(r *http.Request, name string) uint

IDParam extracts a uint URL parameter from the given request

func LoadEnv added in v0.5.0

func LoadEnv(env interface{}) error

LoadEnv loads environment variables into env

func NewLogger

func NewLogger(service string) zerolog.Logger

func ParseISO added in v0.10.0

func ParseISO(date string) (time.Time, error)

func ParseQuery added in v0.9.0

func ParseQuery(query map[string]string, v interface{}) error

ParseQuery converts a map of strings to strings to a struct. It uses the key and default struct tag to help it determine how to get keys and set defaults. Mind that it only supports the types - int(all bit sizes) - uint(all bit sizes) - float(all bit sizes) - string - ISO8601 time It defaults the keys to the lowercase struct field names.

func RandomBytes added in v0.8.0

func RandomBytes(n int) ([]byte, error)

RandomBytes returns securely generated random bytes. It will return an error if the system's secure random number generator fails to function correctly, in which case the caller should not continue.

func RandomString added in v0.8.0

func RandomString(s int) (string, error)

RandomString returns a securely generated random hex string. It will return an error if the system's secure random number generator fails to function correctly, in which case the caller should not continue. Keep in mind that s is the length of the returned string, not the number of bytes to be produced

func ReadBody

func ReadBody(r *http.Request) []byte

ReadBody extracts the bytes in a request body without destroying the contents of the body

func ReadJSON added in v0.8.0

func ReadJSON(r *http.Request, v interface{})

ReadJSON decodes the JSON body of the request and destroys to prevent possible issues with writing a response. If the content type is not JSON it fails with a 415. Otherwise it fails with a 400 on validation errors.

func ReadQuery added in v0.8.0

func ReadQuery(r *http.Request, v interface{})

ReadQuery reads the query parameters of a request into a struct

func Send added in v0.8.0

func Send(w http.ResponseWriter, code int, data []byte)

func SendError

func SendError(r *http.Request, w http.ResponseWriter, err APIError)

SendError sends a JSON error message

func SendSuccess

func SendSuccess(r *http.Request, w http.ResponseWriter, v interface{})

SendSuccess sends a JSON success message with status code 200

func StringParam added in v0.2.0

func StringParam(r *http.Request, name string) string

StringParam basically just ensures the param name is correct. You might not need this method unless you're too lazy to do real tests.

func UUID added in v0.8.0

func UUID() string

func WithCancel added in v0.10.0

func WithCancel(parent context.Context) (context.Context, context.CancelFunc)

WithCancel replicates context.WithCancel but listens for Interrupt and SIGTERM signals

Types

type APIError

type APIError struct {
	Code    int         `json:"-"`
	Message string      `json:"message"`
	Meta    interface{} `json:"meta"`
	Err     error       `json:"-"`
}

APIError is a struct describing an error

func (APIError) Error

func (e APIError) Error() string

implements the error interface

func (APIError) Unwrap added in v0.2.0

func (e APIError) Unwrap() error

type SessionStore added in v0.8.0

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

func NewSessionStore added in v0.8.0

func NewSessionStore(secret []byte, scheme string, timeout time.Duration, store *tokens.Store) *SessionStore

func (*SessionStore) Headless added in v0.8.0

func (s *SessionStore) Headless() func(http.Handler) http.Handler

Secure loads a user session into the request context

func (*SessionStore) Load added in v0.8.0

func (s *SessionStore) Load(r *http.Request, session interface{})

Load retrieves a user's session object based on the session key from the Authorization header or the session cookie and fails with an error if it faces any issue parsing any of them.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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