Skip to content

Commit 210e968

Browse files
committed
wip
1 parent 73df742 commit 210e968

File tree

2 files changed

+22
-48
lines changed

2 files changed

+22
-48
lines changed

aws/adaptor.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ import (
44
"context"
55
"fmt"
66
"github.com/aws/aws-lambda-go/lambda"
7+
"github.com/aws/aws-lambda-go/lambda/handlertrace"
78
"github.com/yacchi/lambda-http-adaptor/registry"
89
"github.com/yacchi/lambda-http-adaptor/types"
910
"net/http"
1011
"os"
1112
)
1213

14+
var DEBUGDumpPayload = os.Getenv("DEBUG_DUMP_PAYLOAD")
15+
1316
type LambdaIntegrationType int
1417

1518
const (
@@ -79,11 +82,22 @@ func LambdaDetector() bool {
7982
}
8083

8184
type LambdaAdaptor struct {
82-
h lambda.Handler
85+
h *LambdaHandler
8386
}
8487

8588
func (l LambdaAdaptor) ListenAndServe() error {
86-
lambda.Start(l.h)
89+
ctx := context.Background()
90+
if DEBUGDumpPayload != "" && (DEBUGDumpPayload == "1" || DEBUGDumpPayload == "true") {
91+
ctx = handlertrace.NewContext(ctx, handlertrace.HandlerTrace{
92+
RequestEvent: func(ctx context.Context, payload interface{}) {
93+
fmt.Printf("Request payload: %s\n", payload)
94+
},
95+
ResponseEvent: func(ctx context.Context, payload interface{}) {
96+
fmt.Printf("Response payload: %s\n", payload)
97+
},
98+
})
99+
}
100+
lambda.StartHandlerFunc(l.h.Invoke, lambda.WithContext(ctx))
87101
return nil
88102
}
89103

aws/lambda.go

Lines changed: 6 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
2015
const DefaultNonHTTPEventPath = "/events"
2116

2217
type 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

Comments
 (0)