-
Notifications
You must be signed in to change notification settings - Fork 0
/
write_if_err.go
52 lines (44 loc) · 2.49 KB
/
write_if_err.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
package httpu
import (
"net/http"
"github.com/clavoie/logu/v2"
)
// DecodeJsonOr400 attempts to json decode the request body into the destination object. See
// encoding/json for details.
//
// The request body is closed when this function returns.
//
// If an error is encountered decoding the object a HTTP 400 is written to the response stream,
// and true is returned. If the decoding succeeds then false is returned
func DecodeJsonOr400(w http.ResponseWriter, r *http.Request, dst interface{}, format string, args ...interface{}) bool {
return NewImpl(w, r, logu.NewGoLogger()).DecodeJsonOr400(dst, format, args...)
}
// EncodeJsonOr500 sets the Content-Type of the response to application/json, and encodes the
// src object into a json response stream. If there is any error encoding the object a
// HTTP 500 is returned instead.
//
// Returns true if there was an error encountered, and false otherwise.
func EncodeJsonOr500(w http.ResponseWriter, src interface{}, format string, args ...interface{}) bool {
return NewImpl(w, nil, logu.NewGoLogger()).EncodeJsonOr500(src, format, args...)
}
// SetAsDownloadFileWithName sets the Content-Disposition of the response writer to that of
// an attachment with the specified file name.
func SetAsDownloadFileWithName(w http.ResponseWriter, filenameFmt string, args ...interface{}) {
NewImpl(w, nil, logu.NewGoLogger()).SetAsDownloadFileWithName(filenameFmt, args...)
}
// Write400IfErr works like WriteIfErr(err, http.StatusBadRequest, w, format, args...)
func Write400IfErr(err error, w http.ResponseWriter, format string, args ...interface{}) bool {
return NewImpl(w, nil, logu.NewGoLogger()).WriteIfErr(err, http.StatusBadRequest, format, args...)
}
// Write500IfErr works like WriteIfErr(err, http.StatusInternalServerError, w, format, args...)
func Write500IfErr(err error, w http.ResponseWriter, format string, args ...interface{}) bool {
return NewImpl(w, nil, logu.NewGoLogger()).WriteIfErr(err, http.StatusInternalServerError, format, args...)
}
// WriteIfErr writes an http status code and message if there is an error. If the error
// is non-nil then the given http status code is written to the http.ResponseWriter,
// and the message and error are written to the go log package.
//
// true is returned if an error was detected and false is returned if there is no error
func WriteIfErr(err error, statusCode int, w http.ResponseWriter, format string, args ...interface{}) bool {
return NewImpl(w, nil, logu.NewGoLogger()).WriteIfErr(err, statusCode, format, args...)
}