delta

package module
v2.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 22, 2023 License: MIT Imports: 14 Imported by: 1

README

δelta

Use golang http handler in AWS Lambda

usage

func helloHandler(w http.ResponseWriter, r *http.Request) {
	w.Header().Add("x-powered-by", "delta")
	fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
}

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/hello/", helloHandler)

	// start lambda handling if it runs on lambda
	// otherwise start http server on port 3000
	delta.ServeOrStartLambda(":3000", mux)
}

License

MIT

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetAlbEvent added in v2.1.0

func GetAlbEvent(ctx context.Context) (*events.ALBTargetGroupRequest, error)

func GetApiGatewayV1Event added in v2.1.0

func GetApiGatewayV1Event(ctx context.Context) (*events.APIGatewayProxyRequest, error)

func GetApiGatewayV2Event added in v2.1.0

func GetApiGatewayV2Event(ctx context.Context) (*events.APIGatewayV2HTTPRequest, error)

func GetEvent added in v2.1.0

func GetEvent(ctx context.Context) (any, error)

func GetLambdaUrlEvent added in v2.1.0

func GetLambdaUrlEvent(ctx context.Context) (*events.LambdaFunctionURLRequest, error)

func ServeOrStartLambda

func ServeOrStartLambda(addr string, h http.Handler, opts ...Options) error

ServeOrStartLambda will start http server if it's not in lambda environment, otherwise it starts handling lambda

func SetBase64Encoding

func SetBase64Encoding(w http.ResponseWriter, enabled bool) error

SetBase64Encoding overrides base64 encoding for this response see Configuration.SetBase64Encoding

func Start

func Start(h http.Handler, opts ...Options)

Start lambda server

Example:

mux := http.NewServeMux()
mux.Handle("/", handeHandler)
delta.Start(nil, mux)

Types

type AlbTransformer

type AlbTransformer struct{}

func (AlbTransformer) Request

func (AlbTransformer) Request(ctx context.Context, payload []byte) (*http.Request, error)

Request implements Transformer

func (AlbTransformer) Response

func (AlbTransformer) Response(_ context.Context, r *ResponseWriter) ([]byte, error)

Response implements Transformer

type ApiGatewayV1Transformer

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

func (ApiGatewayV1Transformer) Request

func (ApiGatewayV1Transformer) Request(ctx context.Context, payload []byte) (*http.Request, error)

Request implements Transformer

func (ApiGatewayV1Transformer) Response

func (ApiGatewayV1Transformer) Response(ctx context.Context, r *ResponseWriter) ([]byte, error)

Response implements Transformer

type ApiGatewayV2Transformer

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

func (ApiGatewayV2Transformer) Request

func (ApiGatewayV2Transformer) Request(ctx context.Context, payload []byte) (*http.Request, error)

Request implements Transformer

func (ApiGatewayV2Transformer) Response

func (ApiGatewayV2Transformer) Response(ctx context.Context, r *ResponseWriter) ([]byte, error)

Response implements Transformer

type Handler

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

func NewHandler

func NewHandler(h http.Handler, opts ...Options) *Handler

func (*Handler) Invoke

func (lh *Handler) Invoke(ctx context.Context, payload []byte) ([]byte, error)

Invoke implements lambda.Handler

func (*Handler) ServeHTTP

func (lh *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request)

type LambdaURLTransformer

type LambdaURLTransformer struct{}

func (LambdaURLTransformer) Request

func (LambdaURLTransformer) Request(ctx context.Context, payload []byte) (*http.Request, error)

Request implements Transformer

func (LambdaURLTransformer) Response

Response implements Transformer

type Options

type Options func(*config)

func WithALB

func WithALB() Options

func WithAPIGatewayV1

func WithAPIGatewayV1() Options

func WithAPIGatewayV2

func WithAPIGatewayV2() Options

func WithEncodeResponse

func WithEncodeResponse() Options

func WithLambdaURL

func WithLambdaURL() Options

func WithTransformer

func WithTransformer(t Transformer) Options

type ResponseWriter

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

ResponseWriter implements http.ResponseWriter used for buffering response

func NewResponseWriter

func NewResponseWriter() *ResponseWriter

NewResponseWriter creates new empty ResponseWriter

func (*ResponseWriter) Header

func (rw *ResponseWriter) Header() http.Header

Header returns http.Header. You can modify it to send response header

func (*ResponseWriter) ReadFrom added in v2.1.0

func (rw *ResponseWriter) ReadFrom(r io.Reader) (n int64, err error)

ReadFrom implements

func (*ResponseWriter) Write

func (rw *ResponseWriter) Write(chunk []byte) (int, error)

Write appends chunk to response body

func (*ResponseWriter) WriteHeader

func (rw *ResponseWriter) WriteHeader(statusCode int)

WriteHeader set status code of current request

func (*ResponseWriter) WriteString added in v2.1.0

func (rw *ResponseWriter) WriteString(s string) (n int, err error)

WriteString implements io.StringWriter

type Transformer

type Transformer interface {
	Request(context.Context, []byte) (*http.Request, error)
	Response(context.Context, *ResponseWriter) ([]byte, error)
}

func GetDefaultTransformer added in v2.1.0

func GetDefaultTransformer() Transformer

Jump to

Keyboard shortcuts

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