76 lines
2.3 KiB
Go
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
|
|
}
|