63 lines
863 B
Go
63 lines
863 B
Go
package fetch
|
|
|
|
import "net/http"
|
|
|
|
type (
|
|
Options struct {
|
|
Url string
|
|
Method string
|
|
Header map[string]string
|
|
Params map[string]string
|
|
Data any
|
|
Human bool
|
|
}
|
|
Option func(o *Options)
|
|
)
|
|
|
|
func WithUrl(s string) Option {
|
|
return func(o *Options) {
|
|
o.Url = s
|
|
}
|
|
}
|
|
|
|
func WithMethod(s string) Option {
|
|
return func(o *Options) {
|
|
o.Method = s
|
|
}
|
|
}
|
|
|
|
func WithHeader(h map[string]string) Option {
|
|
return func(o *Options) {
|
|
if o.Header == nil {
|
|
o.Header = h
|
|
}
|
|
for k, v := range o.Header {
|
|
o.Header[k] = v
|
|
}
|
|
}
|
|
}
|
|
|
|
func WithHuman() Option {
|
|
return func(o *Options) {
|
|
o.Human = true
|
|
}
|
|
}
|
|
|
|
func WithParams(h map[string]string) Option {
|
|
return func(o *Options) {
|
|
o.Params = h
|
|
}
|
|
}
|
|
|
|
func WithData(v any) Option {
|
|
return func(o *Options) {
|
|
o.Data = v
|
|
}
|
|
}
|
|
|
|
func newOptions() *Options {
|
|
return &Options{
|
|
Method: http.MethodGet,
|
|
}
|
|
}
|