File tree Expand file tree Collapse file tree 3 files changed +94
-0
lines changed
Expand file tree Collapse file tree 3 files changed +94
-0
lines changed Original file line number Diff line number Diff line change 1+ package httpadapter
2+
3+ import (
4+ "net/http"
5+
6+ "github.com/aws/aws-lambda-go/events"
7+ "github.com/awslabs/aws-lambda-go-api-proxy/core"
8+ )
9+
10+ type HandlerAdapter struct {
11+ core.RequestAccessor
12+ handler http.Handler
13+ }
14+
15+ func New (handler http.Handler ) * HandlerAdapter {
16+ return & HandlerAdapter {
17+ handler : handler ,
18+ }
19+ }
20+
21+ func (h * HandlerAdapter ) Proxy (event events.APIGatewayProxyRequest ) (events.APIGatewayProxyResponse , error ) {
22+ req , err := h .ProxyEventToHTTPRequest (event )
23+ if err != nil {
24+ return core .GatewayTimeout (), core .NewLoggedError ("Could not convert proxy event to request: %v" , err )
25+ }
26+
27+ w := core .NewProxyResponseWriter ()
28+ h .handler .ServeHTTP (http .ResponseWriter (w ), req )
29+
30+ resp , err := w .GetProxyResponse ()
31+ if err != nil {
32+ return core .GatewayTimeout (), core .NewLoggedError ("Error while generating proxy response: %v" , err )
33+ }
34+
35+ return resp , nil
36+ }
Original file line number Diff line number Diff line change 1+ package httpadapter_test
2+
3+ import (
4+ "fmt"
5+ "log"
6+ "net/http"
7+
8+ "github.com/aws/aws-lambda-go/events"
9+ "github.com/awslabs/aws-lambda-go-api-proxy/httpadapter"
10+
11+ . "github.com/onsi/ginkgo"
12+ . "github.com/onsi/gomega"
13+ )
14+
15+ type handler struct {}
16+
17+ func (h handler ) ServeHTTP (w http.ResponseWriter , req * http.Request ) {
18+ w .Header ().Add ("unfortunately-required-header" , "" )
19+ fmt .Fprintf (w , "Go Lambda!!" )
20+ }
21+
22+ var _ = Describe ("HTTPAdapter tests" , func () {
23+ Context ("Simple ping request" , func () {
24+ It ("Proxies the event correctly" , func () {
25+ log .Println ("Starting test" )
26+
27+ var httpHandler http.Handler = http .HandlerFunc (func (w http.ResponseWriter , req * http.Request ) {
28+ w .Header ().Add ("unfortunately-required-header" , "" )
29+ fmt .Fprintf (w , "Go Lambda!!" )
30+ })
31+
32+ adapter := httpadapter .New (httpHandler )
33+
34+ req := events.APIGatewayProxyRequest {
35+ Path : "/ping" ,
36+ HTTPMethod : "GET" ,
37+ }
38+
39+ resp , err := adapter .Proxy (req )
40+
41+ Expect (err ).To (BeNil ())
42+ Expect (resp .StatusCode ).To (Equal (200 ))
43+ })
44+ })
45+ })
Original file line number Diff line number Diff line change 1+ package httpadapter_test
2+
3+ import (
4+ "testing"
5+
6+ . "github.com/onsi/ginkgo"
7+ . "github.com/onsi/gomega"
8+ )
9+
10+ func TestHTTPAdapter (t * testing.T ) {
11+ RegisterFailHandler (Fail )
12+ RunSpecs (t , "HttpAdapter Suite" )
13+ }
You can’t perform that action at this time.
0 commit comments