corehttp: tear off makeHandler, for tests
License: MIT Signed-off-by: Kevin Wallace <kevin@pentabarf.net>
Kevin Wallace committed
Feb 8, 2015 at 11:33 UTC
794b7b7b3e82168ed02600cf76669a05b6970729
1 file changed
+21
-10
core/corehttp/corehttp.go
+21
-10
@@ -18,6 +18,21 @@ var log = eventlog.Logger("core/server")
18
// initially passed in if not.
19
type ServeOption func(*core.IpfsNode, *http.ServeMux) (*http.ServeMux, error)
20
21
+// makeHandler turns a list of ServeOptions into a http.Handler that implements
22
+// all of the given options, in order.
23
+func makeHandler(n *core.IpfsNode, options ...ServeOption) (http.Handler, error) {
24
+ topMux := http.NewServeMux()
25
+ mux := topMux
26
+ for _, option := range options {
27
+ var err error
28
+ mux, err = option(n, mux)
29
+ if err != nil {
30
+ return nil, err
31
+ }
32
+ }
33
+ return topMux, nil
34
+}
35
+
36
// ListenAndServe runs an HTTP server listening at |listeningMultiAddr| with
37
// the given serve options. The address must be provided in multiaddr format.
38
//
@@ -29,18 +44,14 @@ func ListenAndServe(n *core.IpfsNode, listeningMultiAddr string, options ...Serv
44
if err != nil {
45
return err
46
}
32
- topMux := http.NewServeMux()
33
- mux := topMux
34
- for _, option := range options {
35
- mux, err = option(n, mux)
36
- if err != nil {
37
- return err
38
- }
47
+ handler, err := makeHandler(n, options...)
48
+ if err != nil {
49
+ return err
50
}
40
- return listenAndServe(n, addr, topMux)
51
+ return listenAndServe(n, addr, handler)
52
}
53
43
-func listenAndServe(node *core.IpfsNode, addr ma.Multiaddr, mux *http.ServeMux) error {
54
+func listenAndServe(node *core.IpfsNode, addr ma.Multiaddr, handler http.Handler) error {
55
_, host, err := manet.DialArgs(addr)
56
if err != nil {
57
return err
@@ -53,7 +64,7 @@ func listenAndServe(node *core.IpfsNode, addr ma.Multiaddr, mux *http.ServeMux)
64
serverExited := make(chan struct{})
65
66
go func() {
56
- serverError = server.ListenAndServe(host, mux)
67
+ serverError = server.ListenAndServe(host, handler)
68
close(serverExited)
69
}()
70