/
builder.go
68 lines (56 loc) · 1.76 KB
/
builder.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
// Copyright 2022 anoweb Author. All Rights Reserved.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package context
import (
"net/http"
"github.com/go-the-way/anoweb/mime"
)
// ResponseBuilder struct
type ResponseBuilder struct {
r *Response
}
// Build Response
func (r *ResponseBuilder) Build() *Response {
return r.r
}
// Builder Response
func Builder() *ResponseBuilder {
return &ResponseBuilder{r: &Response{Status: http.StatusOK, ContentType: mime.TEXT}}
}
// DefaultBuild Response
func (r *ResponseBuilder) DefaultBuild() *Response {
return r.Header(http.Header{}).Cookies(make([]*http.Cookie, 0)).Status(http.StatusOK).ContentType(mime.TEXT).Build()
}
// Data Response
func (r *ResponseBuilder) Data(data []byte) *ResponseBuilder {
r.r.Data = data
return r
}
// Header Response
func (r *ResponseBuilder) Header(header http.Header) *ResponseBuilder {
r.r.Header = header
return r
}
// Cookies Response
func (r *ResponseBuilder) Cookies(cookies []*http.Cookie) *ResponseBuilder {
r.r.Cookies = cookies
return r
}
// Status Response
func (r *ResponseBuilder) Status(status int) *ResponseBuilder {
r.r.Status = status
return r
}
// ContentType Response
func (r *ResponseBuilder) ContentType(contentType string) *ResponseBuilder {
r.r.ContentType = contentType
return r
}