...
1
2
3
4
5
6
7
8
9
10
11
12
13 package fs
14
15 import (
16 "errors"
17 "net/http"
18 "os"
19 )
20
21 func kerr(err error) error {
22 if err == nil {
23 return nil
24 }
25 if errors.Is(err, statusError{}) {
26
27 return err
28 }
29 if os.IsNotExist(err) {
30 return statusError{status: http.StatusNotFound, error: err}
31 }
32 if os.IsPermission(err) {
33 return statusError{status: http.StatusForbidden, error: err}
34 }
35 return err
36 }
37
38 type statusError struct {
39 error
40 status int
41 }
42
43 func (e statusError) Unwrap() error { return e.error }
44 func (e statusError) HTTPStatus() int { return e.status }
45
View as plain text