/
errors.go
44 lines (35 loc) · 1.02 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
package api
import (
"net/http"
"github.com/go-chi/render"
)
type Data map[string]any
type Error struct {
HTTPStatusCode int `json:"-"`
ErrText string `json:"error,omitempty"`
Data Data `json:"data,omitempty"`
}
func (err *Error) Render(w http.ResponseWriter, r *http.Request) error {
render.Status(r, err.HTTPStatusCode)
return nil
}
func NewDerivedErrorRendererWithData(err error, statusCode int, data Data) render.Renderer {
return &Error{
HTTPStatusCode: statusCode,
ErrText: err.Error(),
Data: data,
}
}
func NewDerivedErrorRenderer(err error, statusCode int) render.Renderer {
return NewDerivedErrorRendererWithData(err, statusCode, nil)
}
func NewTextErrorRendererWithData(errText string, statusCode int, data Data) render.Renderer {
return &Error{
HTTPStatusCode: statusCode,
ErrText: errText,
Data: data,
}
}
func NewTextErrorRenderer(errText string, statusCode int) render.Renderer {
return NewTextErrorRendererWithData(errText, statusCode, nil)
}