93 lines
1.9 KiB
Go
93 lines
1.9 KiB
Go
package domain
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net/url"
|
|
)
|
|
|
|
type SyncServersCmdPayload struct {
|
|
versionCode string
|
|
url *url.URL
|
|
}
|
|
|
|
func NewSyncServersCmdPayload(versionCode string, u *url.URL) (SyncServersCmdPayload, error) {
|
|
if versionCode == "" {
|
|
return SyncServersCmdPayload{}, errors.New("version code can't be blank")
|
|
}
|
|
|
|
if u == nil {
|
|
return SyncServersCmdPayload{}, errors.New("url can't be nil")
|
|
}
|
|
|
|
return SyncServersCmdPayload{versionCode: versionCode, url: u}, nil
|
|
}
|
|
|
|
func (p SyncServersCmdPayload) VersionCode() string {
|
|
return p.versionCode
|
|
}
|
|
|
|
func (p SyncServersCmdPayload) URL() *url.URL {
|
|
return p.url
|
|
}
|
|
|
|
type ServerSyncedEventPayload struct {
|
|
key string
|
|
url *url.URL
|
|
versionCode string
|
|
}
|
|
|
|
func NewServerSyncedEventPayload(key string, u *url.URL, versionCode string) (ServerSyncedEventPayload, error) {
|
|
if key == "" {
|
|
return ServerSyncedEventPayload{}, errors.New("key can't be blank")
|
|
}
|
|
|
|
if versionCode == "" {
|
|
return ServerSyncedEventPayload{}, errors.New("version code can't be blank")
|
|
}
|
|
|
|
if u == nil {
|
|
return ServerSyncedEventPayload{}, errors.New("url can't be nil")
|
|
}
|
|
|
|
return ServerSyncedEventPayload{
|
|
key: key,
|
|
url: u,
|
|
versionCode: versionCode,
|
|
}, nil
|
|
}
|
|
|
|
func NewServerSyncedEventPayloads(servers BaseServers, versionCode string) ([]ServerSyncedEventPayload, error) {
|
|
if versionCode == "" {
|
|
return nil, errors.New("version code can't be blank")
|
|
}
|
|
|
|
res := make([]ServerSyncedEventPayload, 0, len(servers))
|
|
|
|
for i, s := range servers {
|
|
if s.IsZero() {
|
|
return nil, fmt.Errorf("servers[%d] is an empty struct", i)
|
|
}
|
|
|
|
res = append(res, ServerSyncedEventPayload{
|
|
key: s.Key(),
|
|
url: s.URL(),
|
|
versionCode: versionCode,
|
|
})
|
|
}
|
|
|
|
return res, nil
|
|
}
|
|
|
|
func (p ServerSyncedEventPayload) Key() string {
|
|
return p.key
|
|
}
|
|
|
|
func (p ServerSyncedEventPayload) URL() *url.URL {
|
|
return p.url
|
|
}
|
|
|
|
func (p ServerSyncedEventPayload) VersionCode() string {
|
|
return p.versionCode
|
|
}
|