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)