Documentation ¶
Overview ¶
Package urlutil contains types and utilities for dealing with URLs.
Index ¶
Examples ¶
Constants ¶
const ErrEmpty errors.Error = "empty url"
ErrEmpty is returned from Parse and URL.UnmarshalText when the input is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type URL ¶
URL is a wrapper around url.URL that can marshal and unmarshal itself from text form more easily.
Example ¶
package main import ( "encoding/json" "fmt" "net/url" "github.com/AdguardTeam/golibs/netutil/urlutil" ) // check is an error-checking helper for examples. func check(err error) { if err != nil { panic(err) } } func main() { type jsonStruct struct { Stdlib *url.URL Util *urlutil.URL } const rawURL = "https://host.example:1234/path?query=1#fragment" stdlibURL, err := url.Parse(rawURL) check(err) utilURL, err := urlutil.Parse(rawURL) check(err) v := &jsonStruct{ Stdlib: stdlibURL, Util: utilURL, } data, err := json.MarshalIndent(v, "", " ") check(err) fmt.Printf("%s\n", data) v = &jsonStruct{} data = []byte(`{"Util":"` + rawURL + `"}`) err = json.Unmarshal(data, v) check(err) fmt.Printf("%q\n", v.Util) }
Output: { "Stdlib": { "Scheme": "https", "Opaque": "", "User": null, "Host": "host.example:1234", "Path": "/path", "RawPath": "", "OmitHost": false, "ForceQuery": false, "RawQuery": "query=1", "Fragment": "fragment", "RawFragment": "" }, "Util": "https://host.example:1234/path?query=1#fragment" } "https://host.example:1234/path?query=1#fragment"
func Parse ¶
Parse is a wrapper around url.Parse that returns *URL. Unlike url.Parse, it does not consider empty string a valid URL and returns ErrEmpty.
func (*URL) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface for *URL.
TODO(e.burkov): Consider declaring it on a non-pointer receiver.
func (*URL) UnmarshalJSON ¶ added in v0.17.1
UnmarshalJSON implements the json.Unmarshaler interface for *URL.
func (*URL) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface for *URL.