提交 43320e1b 作者: Jakub Sztandera 提交者: Lars Gierth

gateway: use switch for error handling

License: MIT
Signed-off-by: 's avatarJakub Sztandera <kubuxu@protonmail.ch>
上级 82d46a5b
...@@ -160,22 +160,29 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr ...@@ -160,22 +160,29 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr
dr, err := i.api.Cat(ctx, urlPath) dr, err := i.api.Cat(ctx, urlPath)
dir := false dir := false
if err == coreiface.ErrIsDir { switch err {
case nil:
// core.Resolve worked
defer dr.Close()
case coreiface.ErrIsDir:
dir = true dir = true
} else if err == coreiface.ErrOffline { case namesys.ErrResolveFailed:
w.WriteHeader(http.StatusServiceUnavailable)
fmt.Fprint(w, "Could not resolve path. Node is in offline mode.")
return
} else if err == namesys.ErrResolveFailed {
// Don't log that error as it is just noise // Don't log that error as it is just noise
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
fmt.Fprintf(w, "Path Resolve error: %s", err.Error()) fmt.Fprintf(w, "Path Resolve error: %s", err.Error())
log.Info("Path Resolve error: %s", err.Error())
return
case coreiface.ErrOffline:
if !i.node.OnlineMode() {
w.WriteHeader(http.StatusServiceUnavailable)
fmt.Fprint(w, "Could not resolve path. Node is in offline mode.")
return return
} else if err != nil { }
fallthrough
default:
// all other erros
webError(w, "Path Resolve error", err, http.StatusBadRequest) webError(w, "Path Resolve error", err, http.StatusBadRequest)
return return
} else {
defer dr.Close()
} }
etag := gopath.Base(urlPath) etag := gopath.Base(urlPath)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论