Files
sendico/api/pkg/discovery/lookup.go
2026-01-04 12:57:40 +01:00

76 lines
2.3 KiB
Go

package discovery
import "time"
type LookupRequest struct {
RequestID string `json:"requestId,omitempty"`
}
type LookupResponse struct {
RequestID string `json:"requestId,omitempty"`
Services []ServiceSummary `json:"services,omitempty"`
Gateways []GatewaySummary `json:"gateways,omitempty"`
}
type ServiceSummary struct {
ID string `json:"id"`
InstanceID string `json:"instanceId"`
Service string `json:"service"`
Ops []string `json:"ops,omitempty"`
Version string `json:"version,omitempty"`
Healthy bool `json:"healthy,omitempty"`
InvokeURI string `json:"invokeURI,omitempty"`
}
type GatewaySummary struct {
ID string `json:"id"`
InstanceID string `json:"instanceId"`
Rail string `json:"rail"`
Network string `json:"network,omitempty"`
Currencies []string `json:"currencies,omitempty"`
Ops []string `json:"ops,omitempty"`
Limits *Limits `json:"limits,omitempty"`
Version string `json:"version,omitempty"`
Healthy bool `json:"healthy,omitempty"`
RoutingPriority int `json:"routingPriority,omitempty"`
InvokeURI string `json:"invokeURI,omitempty"`
}
func (r *Registry) Lookup(now time.Time) LookupResponse {
entries := r.List(now, true)
resp := LookupResponse{
Services: make([]ServiceSummary, 0),
Gateways: make([]GatewaySummary, 0),
}
for _, entry := range entries {
if entry.Rail != "" {
resp.Gateways = append(resp.Gateways, GatewaySummary{
ID: entry.ID,
InstanceID: entry.InstanceID,
Rail: entry.Rail,
Network: entry.Network,
Currencies: cloneStrings(entry.Currencies),
Ops: cloneStrings(entry.Operations),
Limits: cloneLimits(entry.Limits),
Version: entry.Version,
Healthy: entry.Healthy,
RoutingPriority: entry.RoutingPriority,
InvokeURI: entry.InvokeURI,
})
continue
}
resp.Services = append(resp.Services, ServiceSummary{
ID: entry.ID,
InstanceID: entry.InstanceID,
Service: entry.Service,
Ops: cloneStrings(entry.Operations),
Version: entry.Version,
Healthy: entry.Healthy,
InvokeURI: entry.InvokeURI,
})
}
return resp
}