2023-03-12 07:33:08 +00:00
|
|
|
package domain
|
|
|
|
|
2023-03-13 22:19:53 +00:00
|
|
|
import "net/url"
|
|
|
|
|
2023-03-12 07:33:08 +00:00
|
|
|
// SUID describes a subscription's unique key is the tuple ([Topic] URL,
|
|
|
|
// Subscriber [Callback] URL).
|
|
|
|
type SUID struct {
|
2023-12-20 01:18:54 +00:00
|
|
|
topic *url.URL
|
|
|
|
callback *url.URL
|
2023-03-12 07:33:08 +00:00
|
|
|
}
|
|
|
|
|
2023-03-13 22:19:53 +00:00
|
|
|
func NewSSID(topic Topic, callback *url.URL) SUID {
|
2023-03-12 07:33:08 +00:00
|
|
|
return SUID{
|
2023-12-20 01:18:54 +00:00
|
|
|
topic: topic.Self,
|
|
|
|
callback: callback,
|
2023-03-12 07:33:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-12-20 01:18:54 +00:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2023-03-12 07:33:08 +00:00
|
|
|
func (suid SUID) Equal(target SUID) bool {
|
2023-03-13 22:19:53 +00:00
|
|
|
return suid.topic == target.topic && suid.callback == target.callback
|
2023-03-12 07:33:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (suid SUID) GoString() string {
|
2023-12-20 01:18:54 +00:00
|
|
|
return "domain.SUID(" + suid.topic.String() + ":" + suid.callback.String() + ")"
|
2023-03-12 07:33:08 +00:00
|
|
|
}
|