-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathclient_builder_header.go
65 lines (54 loc) · 2.33 KB
/
client_builder_header.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
package fastshot
import (
"github.com/opus-domini/fast-shot/constant/header"
"github.com/opus-domini/fast-shot/constant/mime"
)
// BuilderHeader is the interface that wraps the basic methods for setting custom HTTP BuilderHeader.
var _ BuilderHeader[ClientBuilder] = (*ClientHeaderBuilder)(nil)
// ClientHeaderBuilder allows for setting custom HTTP BuilderHeader.
type ClientHeaderBuilder struct {
parentBuilder *ClientBuilder
}
// Header returns a new ClientHeaderBuilder for setting custom HTTP BuilderHeader.
func (b *ClientBuilder) Header() *ClientHeaderBuilder {
return &ClientHeaderBuilder{parentBuilder: b}
}
// Add adds a custom header to the HTTP client. If header already exists, it will be appended.
func (b *ClientHeaderBuilder) Add(key header.Type, value string) *ClientBuilder {
b.parentBuilder.client.Header().Add(key, value)
return b.parentBuilder
}
// AddAll adds multiple custom headers to the HTTP client. If header already exists, it will be appended.
func (b *ClientHeaderBuilder) AddAll(headers map[header.Type]string) *ClientBuilder {
for key, value := range headers {
b.Add(key, value)
}
return b.parentBuilder
}
// Set sets a custom header to the HTTP client. If header already exists, it will be overwritten.
func (b *ClientHeaderBuilder) Set(key header.Type, value string) *ClientBuilder {
b.parentBuilder.client.Header().Set(key, value)
return b.parentBuilder
}
// SetAll sets multiple custom headers to the HTTP client. If header already exists, it will be overwritten.
func (b *ClientHeaderBuilder) SetAll(headers map[header.Type]string) *ClientBuilder {
for key, value := range headers {
b.Set(key, value)
}
return b.parentBuilder
}
// AddAccept sets the Accept header. If header already exists, it will be appended.
func (b *ClientHeaderBuilder) AddAccept(value mime.Type) *ClientBuilder {
b.Add(header.Accept, value.String())
return b.parentBuilder
}
// AddContentType sets the Content-Type header. If header already exists, it will be appended.
func (b *ClientHeaderBuilder) AddContentType(value mime.Type) *ClientBuilder {
b.Add(header.ContentType, value.String())
return b.parentBuilder
}
// AddUserAgent sets the User-Agent header. If header already exists, it will be appended.
func (b *ClientHeaderBuilder) AddUserAgent(value string) *ClientBuilder {
b.Add(header.UserAgent, value)
return b.parentBuilder
}