Skip to content

Commit 0c8fede

Browse files
author
Emil Pirfält
committed
Move handlerfunc.NewHandler to httphandler.New
1 parent 6bd3d3c commit 0c8fede

File tree

5 files changed

+95
-25
lines changed

5 files changed

+95
-25
lines changed

handlerfunc/adapter.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,6 @@ func New(handlerFunc http.HandlerFunc) *HandlerFuncAdapter {
1818
}
1919
}
2020

21-
func NewHandler(handler http.Handler) *HandlerFuncAdapter {
22-
return &HandlerFuncAdapter{
23-
handler: handler,
24-
}
25-
}
26-
2721
func (h *HandlerFuncAdapter) Proxy(event events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
2822
req, err := h.ProxyEventToHTTPRequest(event)
2923
if err != nil {

handlerfunc/adapter_test.go

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
2020
}
2121

2222
var _ = Describe("HandlerFuncAdapter tests", func() {
23-
Context("Simple ping request, HandlerFunc", func() {
23+
Context("Simple ping request", func() {
2424
It("Proxies the event correctly", func() {
2525
log.Println("Starting test")
2626

@@ -42,22 +42,4 @@ var _ = Describe("HandlerFuncAdapter tests", func() {
4242
Expect(resp.StatusCode).To(Equal(200))
4343
})
4444
})
45-
46-
Context("Simple ping request, Handler", func() {
47-
It("Proxies the event correctly", func() {
48-
log.Println("Starting test")
49-
50-
adapter := handlerfunc.NewHandler(handler{})
51-
52-
req := events.APIGatewayProxyRequest{
53-
Path: "/ping",
54-
HTTPMethod: "GET",
55-
}
56-
57-
resp, err := adapter.Proxy(req)
58-
59-
Expect(err).To(BeNil())
60-
Expect(resp.StatusCode).To(Equal(200))
61-
})
62-
})
6345
})

httpadapter/adapter.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
}

httpadapter/adapter_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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+
})
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
}

0 commit comments

Comments
 (0)