43 lines
771 B
Go
43 lines
771 B
Go
|
package myUrl
|
||
|
|
||
|
import "net/url"
|
||
|
|
||
|
type UrlCli struct {
|
||
|
url url.URL
|
||
|
params url.Values
|
||
|
}
|
||
|
|
||
|
func NewUrlCli(scheme string, host string) *UrlCli {
|
||
|
return &UrlCli{url: url.URL{Scheme: scheme, Host: host}, params: url.Values{}}
|
||
|
}
|
||
|
|
||
|
func NewUrlCliWithParse(data string) (*UrlCli, error) {
|
||
|
urlObj, err := url.Parse(data)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return &UrlCli{
|
||
|
url: *urlObj,
|
||
|
params: urlObj.Query(),
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
func (t *UrlCli) Set(m map[string]string) {
|
||
|
params := url.Values{}
|
||
|
for s, s2 := range m {
|
||
|
params.Set(s, s2)
|
||
|
}
|
||
|
t.params = params
|
||
|
}
|
||
|
|
||
|
func (t *UrlCli) Add(key, value string) *UrlCli {
|
||
|
t.params.Set(key, value)
|
||
|
return t
|
||
|
}
|
||
|
|
||
|
func (t *UrlCli) String() string {
|
||
|
baseURL := t.url
|
||
|
baseURL.RawQuery = t.params.Encode()
|
||
|
return baseURL.String()
|
||
|
}
|