package starnet import "net/http" // WithHeader 设置 Header func WithHeader(key, value string) RequestOpt { return func(r *Request) error { if isHostHeaderKey(key) { setRequestHostConfig(r.config, value) return nil } r.config.Headers.Set(key, value) return nil } } // WithHost 设置显式 Host 头覆盖。 func WithHost(host string) RequestOpt { return func(r *Request) error { setRequestHostConfig(r.config, host) return nil } } // WithHeaders 批量设置 Headers func WithHeaders(headers map[string]string) RequestOpt { return func(r *Request) error { for key, value := range headers { if isHostHeaderKey(key) { setRequestHostConfig(r.config, value) continue } r.config.Headers.Set(key, value) } return nil } } // WithContentType 设置 Content-Type func WithContentType(contentType string) RequestOpt { return func(r *Request) error { r.config.Headers.Set("Content-Type", contentType) return nil } } // WithUserAgent 设置 User-Agent func WithUserAgent(userAgent string) RequestOpt { return func(r *Request) error { r.config.Headers.Set("User-Agent", userAgent) return nil } } // WithBearerToken 设置 Bearer Token func WithBearerToken(token string) RequestOpt { return func(r *Request) error { r.config.Headers.Set("Authorization", "Bearer "+token) return nil } } // WithCookie 添加 Cookie func WithCookie(name, value, path string) RequestOpt { return func(r *Request) error { r.config.Cookies = append(r.config.Cookies, &http.Cookie{ Name: name, Value: value, Path: path, }) return nil } } // WithSimpleCookie 添加简单 Cookie(path 为 /) func WithSimpleCookie(name, value string) RequestOpt { return func(r *Request) error { r.config.Cookies = append(r.config.Cookies, &http.Cookie{ Name: name, Value: value, Path: "/", }) return nil } } // WithCookies 批量添加 Cookies func WithCookies(cookies map[string]string) RequestOpt { return func(r *Request) error { for name, value := range cookies { r.config.Cookies = append(r.config.Cookies, &http.Cookie{ Name: name, Value: value, Path: "/", }) } return nil } }