@@ -5,18 +5,13 @@ import (
55 "encoding/json"
66 "fmt"
77 "github.com/aws/aws-lambda-go/events"
8- "github.com/aws/aws-lambda-go/lambda"
9- "github.com/aws/aws-lambda-go/lambda/handlertrace"
108 "github.com/aws/aws-lambda-go/lambdaurl"
119 "github.com/aws/aws-sdk-go-v2/aws"
1210 "github.com/aws/aws-sdk-go-v2/config"
1311 "github.com/aws/aws-sdk-go/aws/session"
1412 "net/http"
15- "os"
1613)
1714
18- var DEBUGDumpPayload = os .Getenv ("DEBUG_DUMP_PAYLOAD" )
19-
2015const DefaultNonHTTPEventPath = "/events"
2116
2217type LambdaHandlerOption func (handler * LambdaHandler )
@@ -60,7 +55,9 @@ type LambdaHandler struct {
6055 nonHTTPEventPath string
6156}
6257
63- func NewLambdaHandlerWithOption (h http.Handler , options []interface {}) lambda.Handler {
58+ type HandlerFunc func (ctx context.Context , payload json.RawMessage ) (res any , err error )
59+
60+ func NewLambdaHandlerWithOption (h http.Handler , options []interface {}) * LambdaHandler {
6461 handler := & LambdaHandler {
6562 httpHandler : h ,
6663 confProv : func (ctx context.Context ) (aws.Config , error ) {
@@ -79,7 +76,7 @@ func NewLambdaHandlerWithOption(h http.Handler, options []interface{}) lambda.Ha
7976 return handler
8077}
8178
82- func NewLambdaHandler (h http.Handler ) lambda. Handler {
79+ func NewLambdaHandler (h http.Handler ) * LambdaHandler {
8380 return NewLambdaHandlerWithOption (h , nil )
8481}
8582
@@ -182,30 +179,11 @@ func (l *LambdaHandler) InvokeWebsocketAPI(ctx context.Context, request *events.
182179 }
183180}
184181
185- func (l * LambdaHandler ) Invoke (ctx context.Context , payload []byte ) ([]byte , error ) {
186- if DEBUGDumpPayload != "" && (DEBUGDumpPayload == "1" || DEBUGDumpPayload == "true" ) {
187- ctx = handlertrace .NewContext (ctx , handlertrace.HandlerTrace {
188- RequestEvent : func (ctx context.Context , payload interface {}) {
189- fmt .Printf ("Request payload: %s\n " , payload )
190- },
191- ResponseEvent : func (ctx context.Context , payload interface {}) {
192- fmt .Printf ("Response payload: %s\n " , payload )
193- },
194- })
195- }
196-
197- trace := handlertrace .FromContext (ctx )
198-
182+ func (l * LambdaHandler ) Invoke (ctx context.Context , payload json.RawMessage ) (res any , err error ) {
199183 var (
200184 checker integrationTypeChecker
201- res interface {}
202- err error
203185 )
204186
205- if trace .RequestEvent != nil {
206- trace .RequestEvent (ctx , payload )
207- }
208-
209187 if err = json .Unmarshal (payload , & checker ); err != nil {
210188 res , err = l .HandleNonHTTPEvent (ctx , payload , http .DetectContentType (payload ))
211189 } else {
@@ -245,23 +223,5 @@ func (l *LambdaHandler) Invoke(ctx context.Context, payload []byte) ([]byte, err
245223 }
246224 }
247225
248- if err != nil {
249- return nil , err
250- }
251-
252- if b , ok := res .([]byte ); ok {
253- if trace .ResponseEvent != nil {
254- trace .ResponseEvent (ctx , b )
255- }
256- return b , nil
257- } else {
258- if responseBytes , err := json .Marshal (res ); err != nil {
259- return nil , err
260- } else {
261- if trace .ResponseEvent != nil {
262- trace .ResponseEvent (ctx , responseBytes )
263- }
264- return responseBytes , nil
265- }
266- }
226+ return res , err
267227}
0 commit comments