38 lines
703 B
Go
38 lines
703 B
Go
package domain
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
|
|
"source.toby3d.me/toby3d/hub/internal/common"
|
|
)
|
|
|
|
// Callback describes the URL at which a subscriber wishes to receive content
|
|
// distribution requests.
|
|
type Callback struct {
|
|
callback *url.URL
|
|
}
|
|
|
|
func ParseCallback(str string) (*Callback, error) {
|
|
u, err := url.Parse(str)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("cannot parse string as callback URL: %w", err)
|
|
}
|
|
|
|
return &Callback{callback: u}, nil
|
|
}
|
|
|
|
func (c Callback) AddQuery(q url.Values) {
|
|
q.Add(common.HubCallback, c.callback.String())
|
|
}
|
|
|
|
func (c Callback) URL() *url.URL {
|
|
u, _ := url.Parse(c.callback.String())
|
|
|
|
return u
|
|
}
|
|
|
|
func (c Callback) String() string {
|
|
return c.callback.String()
|
|
}
|