hub/internal/domain/suid.go

38 lines
740 B
Go

package domain
import "net/url"
// SUID describes a subscription's unique key is the tuple ([Topic] URL,
// Subscriber [Callback] URL).
type SUID struct {
topic *url.URL
callback *url.URL
}
func NewSSID(topic Topic, callback *url.URL) SUID {
return SUID{
topic: topic.Self,
callback: callback,
}
}
func (suid SUID) Topic() *url.URL {
u, _ := url.Parse(suid.topic.String())
return u
}
func (suid SUID) Callback() *url.URL {
u, _ := url.Parse(suid.callback.String())
return u
}
func (suid SUID) Equal(target SUID) bool {
return suid.topic == target.topic && suid.callback == target.callback
}
func (suid SUID) GoString() string {
return "domain.SUID(" + suid.topic.String() + ":" + suid.callback.String() + ")"
}