-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathframework_response_simple.go
112 lines (91 loc) · 2.59 KB
/
framework_response_simple.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package gimlet
import (
"net/http"
"github.com/pkg/errors"
)
func newResponder(data interface{}, code int, of OutputFormat) Responder {
switch in := data.(type) {
case error:
var eresp ErrorResponse
switch err := errors.Cause(in).(type) {
case *ErrorResponse:
if http.StatusText(eresp.StatusCode) == "" {
eresp.StatusCode = code
}
eresp = *err
case ErrorResponse:
if http.StatusText(eresp.StatusCode) == "" {
eresp.StatusCode = code
}
eresp = err
default:
eresp = ErrorResponse{
StatusCode: code,
Message: in.Error(),
}
}
if of == TEXT {
return &responderImpl{
data: eresp.Error(),
status: eresp.StatusCode,
format: of,
}
}
return &responderImpl{
data: eresp,
status: eresp.StatusCode,
format: of,
}
default:
return &responderImpl{
data: data,
status: code,
format: of,
}
}
}
func NewTextResponse(data interface{}) Responder {
return newResponder(data, http.StatusOK, TEXT)
}
func NewTextErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusBadRequest, TEXT)
}
func NewTextInternalErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusInternalServerError, TEXT)
}
func NewJSONResponse(data interface{}) Responder {
return newResponder(data, http.StatusOK, JSON)
}
func NewJSONErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusBadRequest, JSON)
}
func NewJSONInternalErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusInternalServerError, JSON)
}
func NewBinaryResponse(data interface{}) Responder {
return newResponder(data, http.StatusOK, BINARY)
}
func NewBinaryErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusBadRequest, BINARY)
}
func NewBinaryInternalErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusInternalServerError, BINARY)
}
func NewHTMLResponse(data interface{}) Responder {
return newResponder(data, http.StatusOK, HTML)
}
func NewHTMLErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusBadRequest, HTML)
}
func NewHTMLInternalErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusInternalServerError, HTML)
}
func NewYAMLResponse(data interface{}) Responder {
return newResponder(data, http.StatusOK, YAML)
}
func NewYAMLErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusBadRequest, YAML)
}
func NewYAMLInternalErrorResponse(data interface{}) Responder {
return newResponder(data, http.StatusInternalServerError, YAML)
}