forked from ory/common
/
errors.go
58 lines (51 loc) · 1.3 KB
/
errors.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package pkg
import (
"net/http"
"github.com/go-errors/errors"
)
var (
ErrNotFound = errors.New("Not found")
ErrInvalidPayload = errors.New("Invalid payload")
ErrUnauthorized = errors.New("Unauthorized")
ErrForbidden = errors.New("Forbidden")
)
func WriteError(w http.ResponseWriter, err error) {
if err == ErrNotFound {
LogError(err, http.StatusNotFound)
http.Error(w, err.Error(), http.StatusNotFound)
return
} else if err == ErrInvalidPayload {
LogError(err, http.StatusBadRequest)
http.Error(w, err.Error(), http.StatusBadRequest)
return
} else if err == ErrUnauthorized {
LogError(err, http.StatusUnauthorized)
http.Error(w, err.Error(), http.StatusUnauthorized)
return
} else if err == ErrForbidden {
LogError(err, http.StatusForbidden)
http.Error(w, err.Error(), http.StatusForbidden)
return
}
LogError(err, http.StatusInternalServerError)
http.Error(w, err.Error(), http.StatusInternalServerError)
}
func HttpError(rw http.ResponseWriter, err error, code int) {
LogError(err, code)
http.Error(rw, err.Error(), code)
}
func GetErrorStack(err interface{}) string {
if err == nil {
return ""
}
if e, ok := err.(*errors.Error); ok {
return e.ErrorStack()
}
return ""
}
func GetErrorMessage(err error) string {
if err == nil {
return ""
}
return err.Error()
}