Back to godoc.org
github.com/keyup-app/keyups/httpserver

Package httpserver

v0.0.0-...-21fbaa0
Latest Go to latest

The highest tagged major version is .

Published: Sep 8, 2019 | License: MIT | Module: github.com/keyup-app/keyups/httpserver

Index

func AddRoutes

func AddRoutes(s *Server, e *echo.Echo)

AddRoutes adds routes to an Echo instance.

func CheckAuthorization

func CheckAuthorization(ctx context.Context, method string, urs string, auth string, mc MemCache, now time.Time, upk *keyup.UserPublicKey) error

CheckAuthorization returns errors if authorization fails.

func ErrBadRequest

func ErrBadRequest(c echo.Context, err error) error

ErrBadRequest response.

func ErrConflict

func ErrConflict(c echo.Context, err error) error

ErrConflict response.

func ErrEntityTooLarge

func ErrEntityTooLarge(c echo.Context, err error) error

ErrEntityTooLarge response.

func ErrForbidden

func ErrForbidden(c echo.Context, err error) error

ErrForbidden response.

func ErrNotFound

func ErrNotFound(c echo.Context, err error) error

ErrNotFound response.

func ErrResponse

func ErrResponse(c echo.Context, status int, msg string) error

ErrResponse is a generate error response.

func ErrUnauthorized

func ErrUnauthorized(c echo.Context, err error) error

ErrUnauthorized response.

func ErrorHandler

func ErrorHandler(err error, c echo.Context)

ErrorHandler returns error handler that returns in the format: {"error": {"message": "error message", status: 500}}".

func JSON

func JSON(c echo.Context, status int, i interface{}) error

JSON response.

func NewHandler

func NewHandler(s *Server) http.Handler

NewHandler returns http.Handler for Server.

func SetContextLogger

func SetContextLogger(l ContextLogger)

SetContextLogger sets logger for the package

type Access

type Access struct {
	Allow   bool
	Message string
	// StatusCode (optional) for custom HTTP status (if denied)
	StatusCode int
}

Access returns whether to allow or deny.

func AccessAllow

func AccessAllow() Access

AccessAllow allow access.

func AccessDeny

func AccessDeny(msg string) Access

AccessDeny deny access (bad request).

func AccessDenyErrored

func AccessDenyErrored(err error) Access

AccessDenyErrored deny access (an error occurred trying to determine access).

func AccessDenyTooManyRequests

func AccessDenyTooManyRequests(msg string) Access

AccessDenyTooManyRequests deny access (too many requests).

type AccessAction

type AccessAction string

AccessAction is action for access control.

const (
	// Put action.
	Put AccessAction = "put"
	// Post action.
	Post AccessAction = "post"
)

type AccessContext

type AccessContext interface {
	RealIP() string
	Request() *http.Request
}

AccessContext is context for request.

type AccessFn

type AccessFn func(c AccessContext, resource AccessResource, action AccessAction) Access

AccessFn returns access to resource. If error message begins with an integer, it will use that as the http status code. For example, "429: too many requests".

type AccessResource

type AccessResource string

AccessResource is resource for access control.

const (
	// UserPublicKeyResource for a user public key.
	UserPublicKeyResource AccessResource = "user-public-key"
	// SigchainResource for sigchain.
	SigchainResource AccessResource = "sigchain"
)

type ContextLogger

type ContextLogger interface {
	Debugf(ctx context.Context, format string, args ...interface{})
	Infof(ctx context.Context, format string, args ...interface{})
	Warningf(ctx context.Context, format string, args ...interface{})
	Errorf(ctx context.Context, format string, args ...interface{})
}

ContextLogger interface used in this package with request context.

type Fire

type Fire interface {
	keyup.Datastore
	keyup.LogEntries
}

Fire defines interface for remote store (like Firestore).

type LogLevel

type LogLevel int

LogLevel ...

const (
	// DebugLevel ...
	DebugLevel LogLevel = 0
	// InfoLevel ...
	InfoLevel LogLevel = 1
	// WarnLevel ...
	WarnLevel LogLevel = 2
	// ErrLevel ...
	ErrLevel LogLevel = 3
)

type MemCache

type MemCache interface {
	// Get returns value at key.
	Get(ctx context.Context, k string) (string, error)
	// Put puts a value at key.
	Set(ctx context.Context, k string, v string) error
	// Expire key.
	Expire(ctx context.Context, k string, dt time.Duration) error
}

MemCache defines interface for memcache. Used to prevent nonce re-use for authenticated requests.

func NewMemTestCache

func NewMemTestCache(nowFn func() time.Time) MemCache

NewMemTestCache returns in memory MemCache (for testing).

type Server

type Server struct {

	// URL (base) of form http://host:port with no trailing slash to help
	// authorization checks in testing where the host is ambiguous.
	URL string
	// contains filtered or unexported fields
}

Server ...

func NewServer

func NewServer(fi Fire, mc MemCache) *Server

NewServer creates a Server.

func (*Server) SetAccessFn

func (s *Server) SetAccessFn(fn AccessFn)

SetAccessFn sets access control.

func (*Server) SetInternalAuth

func (s *Server) SetInternalAuth(internalAuth string)

SetInternalAuth for authorizing internal requests, like tasks.

func (*Server) SetNowFn

func (s *Server) SetNowFn(nowFn func() time.Time)

SetNowFn sets clock Now function.

func (*Server) SetRequestor

func (s *Server) SetRequestor(req user.Requestor)

SetRequestor ...

func (*Server) SetTasks

func (s *Server) SetTasks(tasks Tasks)

SetTasks ...

func (*Server) UserPublicKey

func (s *Server) UserPublicKey(ctx context.Context, pkid keyup.ID) (*keyup.UserPublicKey, error)

UserPublicKey ...

type Tasks

type Tasks interface {
	// CreateTask ...
	CreateTask(ctx context.Context, method string, url string, authToken string) error
}

Tasks ..

func NewTestTasks

func NewTestTasks(svr *Server) Tasks

NewTestTasks returns Tasks for use in tests.

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier