@cryptotaxi247 / kubo / commits / 3c1d78c67

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 }