8000 GitHub - plusiv/goada: Fast WHATWG spec compliant URL library written in Go
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ goada Public
forked from ada-url/goada

Fast WHATWG spec compliant URL library written in Go

License

Notifications You must be signed in to change notification settings

plusiv/goada

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Fast WHATWG spec compliant URL library written in Go

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.2%
  • Go 0.8%
0