goada

package module
v0.0.0-...-5e45a57 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 2, 2024 License: Apache-2.0, MIT Imports: 4 Imported by: 1

README

goada: Fast WHATWG URL library in Go

Go-CI GoDoc

The goada library provides support for the WHATWG URL standard in Go.

Requirements

  • Go 1.20 or better.
Examples
url, nil := New("https://	www.GOoglé.com/./path/../path2/")
fmt.Println(url.Href()) // "https://www.xn--googl-fsa.com/path2/"

A common use of a URL parser is to take a URL string and normalize it. The WHATWG URL specification has been adopted by most browsers. Other tools, such as the Go runtime, follow the RFC 3986. The following table illustrates possible differences in practice (encoding of the host, encoding of the path):

string source string value
input string https://www.7-Eleven.com/Home/../Privacy/Montréal
ada's normalized string https://www.xn--7eleven-506c.com/Home/Privacy/Montr%C3%A9al
curl 7.87 https://www.7-Eleven.com/Privacy/Montr%C3%A9al
Go runtime (net/url) https://www.7-Eleven.com/Home/../Privacy/Montr%C3%A9al

The Go runtime (net/url) does not normalize hostnames, and it does not process pathnames properly.

Usage
import (
   "github.com/ada-url/goada"
   "fmt"
)

url, err := goada.New("https://www.GOogle.com")
if err != nil {
    t.Error("Expected no error")
}
fmt.Println(url.Href()) // prints https://www.google.com/
url.SetProtocol("http:")
url.SetHash("goada")
fmt.Println(url.Hash()) // prints #goada
fmt.Println(url.Href()) // prints http://www.google.com/#goada

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrEmptyString = errors.New("empty url string")
View Source
var ErrInvalidUrl = errors.New("invalid url")

Functions

This section is empty.

Types

type Url

type Url struct {
	// contains filtered or unexported fields
}

func New

func New(urlstring string) (*Url, error)

parse the given string into a URL, a finalizer will be set to free the URL when it is no longer needed.

func NewWithBase

func NewWithBase(urlstring string, basestring string) (*Url, error)

parse the given strings into a URL, a finalizer will be set to free the URL when it is no longer needed.

func (*Url) Free

func (rb *Url) Free()

func (*Url) HasCredentials

func (u *Url) HasCredentials() bool

func (*Url) HasEmptyHostname

func (u *Url) HasEmptyHostname() bool

func (*Url) HasHash

func (u *Url) HasHash() bool

func (*Url) HasHostname

func (u *Url) HasHostname() bool

func (*Url) HasNonEmptyPassword

func (u *Url) HasNonEmptyPassword() bool

func (*Url) HasNonEmptyUsername

func (u *Url) HasNonEmptyUsername() bool

func (*Url) HasPassword

func (u *Url) HasPassword() bool

func (*Url) HasPort

func (u *Url) HasPort() bool

func (*Url) HasSearch

func (u *Url) HasSearch() bool

func (*Url) Hash

func (u *Url) Hash() string

func (*Url) Host

func (u *Url) Host() string

func (*Url) Hostname

func (u *Url) Hostname() string

func (*Url) Href

func (u *Url) Href() string

func (*Url) Password

func (u *Url) Password() string

func (*Url) Pathname

func (u *Url) Pathname() string

func (*Url) Port

func (u *Url) Port() string

func (*Url) Protocol

func (u *Url) Protocol() string

func (*Url) Search

func (u *Url) Search() string

func (*Url) SetHash

func (u *Url) SetHash(s string)

func (*Url) SetHost

func (u *Url) SetHost(s string) bool

func (*Url) SetHostname

func (u *Url) SetHostname(s string) bool

func (*Url) SetHref

func (u *Url) SetHref(s string) bool

func (*Url) SetPassword

func (u *Url) SetPassword(s string) bool

func (*Url) SetPathname

func (u *Url) SetPathname(s string) bool

func (*Url) SetPort

func (u *Url) SetPort(s string) bool

func (*Url) SetProtocol

func (u *Url) SetProtocol(s string) bool

func (*Url) SetSearch

func (u *Url) SetSearch(s string)

func (*Url) SetUsername

func (u *Url) SetUsername(s string) bool

func (*Url) Username

func (u *Url) Username() string

func (*Url) Valid

func (u *Url) Valid() bool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL