🏷️ Added custom URL domain

This commit is contained in:
Maxim Lebedev 2021-12-30 01:06:54 +05:00
parent a4988c3ded
commit 42e7565c10
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
1 changed files with 61 additions and 0 deletions

61
internal/domain/url.go Normal file
View File

@ -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
}