filebrowser/http/utils.go

40 lines
833 B
Go

package http
import (
"encoding/json"
"net/http"
"os"
"github.com/filebrowser/filebrowser/v2/errors"
)
func renderJSON(w http.ResponseWriter, r *http.Request, data interface{}) (int, error) {
marsh, err := json.Marshal(data)
if err != nil {
return http.StatusInternalServerError, err
}
w.Header().Set("Content-Type", "application/json; charset=utf-8")
if _, err := w.Write(marsh); err != nil {
return http.StatusInternalServerError, err
}
return 0, nil
}
func errToStatus(err error) int {
switch {
case err == nil:
return http.StatusOK
case os.IsPermission(err):
return http.StatusForbidden
case os.IsNotExist(err), err == errors.ErrNotExist:
return http.StatusNotFound
case os.IsExist(err), err == errors.ErrExist:
return http.StatusConflict
default:
return http.StatusInternalServerError
}
}