🏷️ Added custom URL domain
This commit is contained in:
parent
a4988c3ded
commit
42e7565c10
|
@ -0,0 +1,61 @@
|
|||
package domain
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
http "github.com/valyala/fasthttp"
|
||||
)
|
||||
|
||||
type URL struct {
|
||||
*http.URI
|
||||
}
|
||||
|
||||
func NewURL(src string) (*URL, error) {
|
||||
u := &URL{
|
||||
URI: http.AcquireURI(),
|
||||
}
|
||||
if err := u.URI.Parse(nil, []byte(src)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return u, nil
|
||||
}
|
||||
|
||||
func TestURL(tb testing.TB, src string) *URL {
|
||||
tb.Helper()
|
||||
|
||||
u := http.AcquireURI()
|
||||
u.Update(src)
|
||||
|
||||
return &URL{
|
||||
URI: u,
|
||||
}
|
||||
}
|
||||
|
||||
func (u *URL) UnmarshalForm(v []byte) error {
|
||||
url, err := NewURL(string(v))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*u = *url
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *URL) UnmarshalJSON(v []byte) error {
|
||||
src, err := strconv.Unquote(string(v))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
url, err := NewURL(src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*u = *url
|
||||
|
||||
return nil
|
||||
}
|
Loading…
Reference in New Issue