@cryptotaxi247 / kubo / commits / 43320e1b7

gateway: use switch for error handling

License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>

Jakub Sztandera committed Sep 8, 2016 at 11:28 UTC 43320e1b7f91a3af799102dbb0f9bba8cd5de44c
1 file changed +16 -9
core/corehttp/gateway_handler.go
+16 -9
@@ -160,22 +160,29 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr
160
161 dr, err := i.api.Cat(ctx, urlPath)
162 dir := false
163 - if err == coreiface.ErrIsDir {
163 + switch err {
164 + case nil:
165 + // core.Resolve worked
166 + defer dr.Close()
167 + case coreiface.ErrIsDir:
168 dir = true
165 - } else if err == coreiface.ErrOffline {
166 - w.WriteHeader(http.StatusServiceUnavailable)
167 - fmt.Fprint(w, "Could not resolve path. Node is in offline mode.")
168 - return
169 - } else if err == namesys.ErrResolveFailed {
169 + case namesys.ErrResolveFailed:
170 // Don't log that error as it is just noise
171 w.WriteHeader(http.StatusBadRequest)
172 fmt.Fprintf(w, "Path Resolve error: %s", err.Error())
173 + log.Info("Path Resolve error: %s", err.Error())
174 return
174 - } else if err != nil {
175 + case coreiface.ErrOffline:
176 + if !i.node.OnlineMode() {
177 + w.WriteHeader(http.StatusServiceUnavailable)
178 + fmt.Fprint(w, "Could not resolve path. Node is in offline mode.")
179 + return
180 + }
181 + fallthrough
182 + default:
183 + // all other erros
184 webError(w, "Path Resolve error", err, http.StatusBadRequest)
185 return
177 - } else {
178 - defer dr.Close()
186 }
187
188 etag := gopath.Base(urlPath)