🏷️ 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