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