@cryptotaxi247 / kubo / commits / 794b7b7b3

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