-
Notifications
You must be signed in to change notification settings - Fork 0
/
respond.go
172 lines (137 loc) · 4.17 KB
/
respond.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/*
Package respond is a http data responder
Source code and other details for the project are available at GitHub:
https://github.com/gookit/respond
usage please see README and examples.
*/
package respond
import (
"encoding/json"
"io"
"net/http"
"github.com/gookit/goutil/netutil/httpctype"
)
const (
defaultCharset = "UTF-8"
defaultXMLPrefix = `<?xml version="1.0" encoding="ISO-8859-1" ?>\n`
)
const (
// ContentType header key
ContentType = httpctype.Key
// ContentText represents content type text/plain
ContentText = httpctype.Text
// ContentJSON represents content type application/json
ContentJSON = httpctype.JSON
// ContentJSONP represents content type application/javascript
ContentJSONP = httpctype.JS
// ContentXML represents content type application/xml
ContentXML = httpctype.XML
// ContentYAML represents content type application/x-yaml
// ContentYAML = "application/x-yaml"
// ContentHTML represents content type text/html
ContentHTML = httpctype.HTML
// ContentBinary represents content type application/octet-stream
ContentBinary = httpctype.Binary
)
const (
// ContentDisposition describes contentDisposition
ContentDisposition = "Content-Disposition"
// describes content disposition type
dispositionInline = "inline"
// describes content disposition type
dispositionAttachment = "attachment"
)
/*************************************************************
* JSON driver config
*************************************************************/
var (
Marshal = json.Marshal
MarshalIndent = json.MarshalIndent
JSONDecoder = json.NewDecoder
)
/*************************************************************
* default instance
*************************************************************/
// create a default instance
var std = New()
// Default instance get
func Default() *Responder {
return std
}
// Init the default instance
func Init(fns ...OptionFn) {
Initialize(fns...)
}
// Initialize the default instance
func Initialize(fns ...OptionFn) {
// apply config options
for _, fn := range fns {
fn(std.opts)
}
// initialize instance
std.Initialize()
}
// LoadTemplateGlob data response
func LoadTemplateGlob(pattern string) {
std.LoadTemplateGlob(pattern)
}
// LoadTemplateFiles data response
func LoadTemplateFiles(files ...string) {
std.LoadTemplateFiles(files...)
}
// HTML data response
func HTML(w http.ResponseWriter, status int, template string, v any, layout ...string) error {
return std.HTML(w, status, template, v, layout...)
}
// HTMLString data response
func HTMLString(w http.ResponseWriter, status int, tplContent string, v any) error {
return std.HTMLString(w, status, tplContent, v)
}
// HTMLText output raw HTML contents response
func HTMLText(w http.ResponseWriter, status int, html string) error {
return std.HTMLText(w, status, html)
}
// Auto data response
func Auto(w http.ResponseWriter, req *http.Request, v any) error {
return std.Auto(w, req, v)
}
// Empty data response
func Empty(w http.ResponseWriter) error {
return std.Empty(w)
}
// NoContent data response
func NoContent(w http.ResponseWriter) error {
return std.NoContent(w)
}
// Content data response
func Content(w http.ResponseWriter, status int, v []byte, contentType string) error {
return std.Content(w, status, v, contentType)
}
// Data data response
func Data(w http.ResponseWriter, status int, v any, contentType string) error {
return std.Data(w, status, v, contentType)
}
// String data response
func String(w http.ResponseWriter, status int, v string) error {
return std.String(w, status, v)
}
// Text data response
func Text(w http.ResponseWriter, status int, v string) error {
return std.Text(w, status, v)
}
// JSON data response
func JSON(w http.ResponseWriter, status int, v any) error {
return std.JSON(w, status, v)
}
// JSONP data response
func JSONP(w http.ResponseWriter, status int, callback string, v any) error {
return std.JSONP(w, status, callback, v)
}
// XML data response
func XML(w http.ResponseWriter, status int, v any) error {
return std.XML(w, status, v)
}
// Binary data response
func Binary(w http.ResponseWriter, status int, in io.Reader, outName string, inline bool) error {
return std.Binary(w, status, in, outName, inline)
}