Documentation
¶
Overview ¶
Package urlx provides a more user-friendly URL parser, modifier and builder. TODO Opaque support
Index ¶
- func AddDefaultPort(scheme string, port uint16) (conflicted bool)
- func DefaultPort(scheme string) (port uint16, ok bool)
- type Modifier
- func TrimFragment() Modifier
- func TrimPort() Modifier
- func TrimQuery() Modifier
- func WithDefaultPort() Modifier
- func WithFragment(fragment string) Modifier
- func WithHost(host string) Modifier
- func WithPath(path string) Modifier
- func WithPort(port uint16) Modifier
- func WithQuery(query string) Modifier
- func WithQueryParams(q url.Values) Modifier
- func WithScheme(scheme string) Modifier
- func WithUserinfo(username, password string) Modifier
- type URL
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddDefaultPort ¶
func DefaultPort ¶
Types ¶
type Modifier ¶
func TrimFragment ¶
func TrimFragment() Modifier
func WithDefaultPort ¶
func WithDefaultPort() Modifier
func WithFragment ¶
func WithQueryParams ¶
func WithScheme ¶
func WithUserinfo ¶
type URL ¶
func Build ¶
Example ¶
package main
import (
"fmt"
"net/url"
"github.com/xoctopus/x/urlx"
)
func main() {
u := urlx.Build(
urlx.WithScheme("HTTPs"),
urlx.WithUserinfo("user", "pass"),
urlx.WithHost("example.com:9999"),
urlx.WithPort(80),
urlx.TrimPort(),
urlx.WithDefaultPort(),
urlx.WithPath("login"),
urlx.WithQuery("k1=v1&k1=v2&k1=v3"),
urlx.WithQueryParams(url.Values{
"k2": []string{"v1", "v2", "v3"},
}),
)
fmt.Println(u.String())
u, _ = urlx.Parse(u.String(), urlx.TrimQuery(), urlx.WithFragment("section1"))
fmt.Println(u.String())
u = urlx.From(u.URL, urlx.TrimFragment(), urlx.TrimPort())
fmt.Println(u.String())
fmt.Println(u.Port())
u = urlx.From(u.URL, urlx.WithScheme("test"), urlx.WithPort(30000))
fmt.Println(u.Port())
u = urlx.From(u.URL, urlx.WithScheme("test"), urlx.TrimPort())
fmt.Println(u.Port())
urlx.AddDefaultPort("test", 30000)
fmt.Println(u.Port())
u, _ = urlx.Parse("http://localhost\n:8080")
fmt.Println(u.IsZero())
}
Output: https://user:pass@example.com:443/login?k1=v1&k1=v2&k1=v3&k2=v1&k2=v2&k2=v3 https://user:pass@example.com:443/login#section1 https://user:pass@example.com/login 443 30000 0 30000 true
Click to show internal directories.
Click to hide internal directories.