github.com/apex/up@v1.7.1/internal/proxy/lambda.go (about)

     1  // Package proxy provides API Gateway and Lambda interoperability.
     2  package proxy
     3  
     4  import (
     5  	"encoding/json"
     6  	"net/http"
     7  
     8  	"github.com/apex/go-apex"
     9  	"github.com/pkg/errors"
    10  )
    11  
    12  // NewHandler returns an apex.Handler.
    13  func NewHandler(h http.Handler) apex.Handler {
    14  	return apex.HandlerFunc(func(event json.RawMessage, ctx *apex.Context) (interface{}, error) {
    15  		e := new(Input)
    16  
    17  		err := json.Unmarshal(event, e)
    18  		if err != nil {
    19  			return nil, errors.Wrap(err, "parsing proxy event")
    20  		}
    21  
    22  		req, err := NewRequest(e)
    23  		if err != nil {
    24  			return nil, errors.Wrap(err, "creating new request from event")
    25  		}
    26  
    27  		res := NewResponse()
    28  		h.ServeHTTP(res, req)
    29  		return res.End(), nil
    30  	})
    31  }