corehttp: added support for HEAD requests
This commit adds HEAD support to the IPFS Gateway. Related: #840
Juan Batiz-Benet committed
Apr 12, 2015 at 02:35 UTC
3c1d78c67207eb23201438f9509386afdc5aad38
1 file changed
+17
-6
core/corehttp/gateway_handler.go
+17
-6
@@ -144,7 +144,12 @@ func (i *gatewayHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
144
}
145
146
if r.Method == "GET" {
147
- i.getHandler(w, r)
147
+ i.getOrHeadHandler(w, r)
148
+ return
149
+ }
150
+
151
+ if r.Method == "HEAD" {
152
+ i.getOrHeadHandler(w, r)
153
return
154
}
155
@@ -160,7 +165,7 @@ func (i *gatewayHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
165
log.Debug(errmsg)
166
}
167
163
-func (i *gatewayHandler) getHandler(w http.ResponseWriter, r *http.Request) {
168
+func (i *gatewayHandler) getOrHeadHandler(w http.ResponseWriter, r *http.Request) {
169
ctx, cancel := context.WithCancel(i.node.Context())
170
defer cancel()
171
@@ -244,8 +249,11 @@ func (i *gatewayHandler) getHandler(w http.ResponseWriter, r *http.Request) {
249
return
250
}
251
defer dr.Close()
252
+
253
// write to request
248
- io.Copy(w, dr)
254
+ if r.Method != "HEAD" {
255
+ io.Copy(w, dr)
256
+ }
257
break
258
}
259
@@ -259,9 +267,12 @@ func (i *gatewayHandler) getHandler(w http.ResponseWriter, r *http.Request) {
267
"listing": dirListing,
268
"path": urlPath,
269
}
262
- if err := i.dirList.Execute(w, hndlr); err != nil {
263
- internalWebError(w, err)
264
- return
270
+
271
+ if r.Method != "HEAD" {
272
+ if err := i.dirList.Execute(w, hndlr); err != nil {
273
+ internalWebError(w, err)
274
+ return
275
+ }
276
}
277
}
278
}