cmd/ipfs: Added an ipfsHandler constructor
Matt Bell committed
Dec 12, 2014 at 20:50 UTC
cb84a376bd5e2a9a1e1c320631505c5f0f1650b6
2 files changed
+25
-8
cmd/ipfs/daemon.go
+8
-3
@@ -165,8 +165,10 @@ func listenAndServeAPI(node *core.IpfsNode, req cmds.Request, addr ma.Multiaddr)
165
cmdHandler := cmdsHttp.NewHandler(*req.Context(), commands.Root, origin)
166
mux.Handle(cmdsHttp.ApiPath+"/", cmdHandler)
167
168
- ifpsHandler := &ipfsHandler{node: node}
169
- ifpsHandler.LoadTemplate()
168
+ ifpsHandler, err := NewIpfsHandler(node)
169
+ if err != nil {
170
+ return err
171
+ }
172
173
mux.Handle("/ipfs/", ifpsHandler)
174
@@ -203,7 +205,10 @@ func listenAndServeGateway(node *core.IpfsNode, addr ma.Multiaddr) error {
205
206
server := manners.NewServer()
207
mux := http.NewServeMux()
206
- ifpsHandler := &ipfsHandler{node}
208
+ ifpsHandler, err := NewIpfsHandler(node)
209
+ if err != nil {
210
+ return err
211
+ }
212
mux.Handle("/ipfs/", ifpsHandler)
213
214
done := make(chan struct{}, 1)
cmd/ipfs/ipfsHandler.go
+17
-5
@@ -40,13 +40,25 @@ type ipfsHandler struct {
40
dirList *template.Template
41
}
42
43
+func NewIpfsHandler(node *core.IpfsNode) (*ipfsHandler, error) {
44
+ i := &ipfsHandler{
45
+ node: node,
46
+ }
47
+ err := i.loadTemplate()
48
+ if err != nil {
49
+ return nil, err
50
+ }
51
+ return i, nil
52
+}
53
+
54
// Load the directroy list template
44
-func (i *ipfsHandler) LoadTemplate() {
55
+func (i *ipfsHandler) loadTemplate() error {
56
t, err := template.New("dir").Parse(listingTemplate)
57
if err != nil {
47
- log.Error(err)
58
+ return err
59
}
60
i.dirList = t
61
+ return nil
62
}
63
64
func (i *ipfsHandler) ResolvePath(path string) (*dag.Node, error) {
@@ -175,9 +187,9 @@ var listingTemplate = `
187
<body>
188
<h2>Index of {{ .path }}</h2>
189
<ul>
178
- <li> <a href="./..">Parent</a></li>
179
- {{ range $item := .listing }}
180
- <li> <a href="./{{ $item.Name }}">{{ $item.Name }}</a> - {{ $item.Size }} bytes</li>
190
+ <li><a href="./..">..</a></li>
191
+ {{ range $item := .listing }}
192
+ <li><a href="./{{ $item.Name }}">{{ $item.Name }}</a> - {{ $item.Size }} bytes</li>
193
{{ end }}
194
</ul>
195
</body>