51 lines
877 B
Go
51 lines
877 B
Go
package http
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/micro/go-micro/registry"
|
|
"github.com/micro/go-micro/server"
|
|
|
|
"github.com/micro/util/go/lib/addr"
|
|
)
|
|
|
|
func serviceDef(opts server.Options) *registry.Service {
|
|
var advt, host string
|
|
var port int
|
|
|
|
if len(opts.Advertise) > 0 {
|
|
advt = opts.Advertise
|
|
} else {
|
|
advt = opts.Address
|
|
}
|
|
|
|
parts := strings.Split(advt, ":")
|
|
if len(parts) > 1 {
|
|
host = strings.Join(parts[:len(parts)-1], ":")
|
|
port, _ = strconv.Atoi(parts[len(parts)-1])
|
|
} else {
|
|
host = parts[0]
|
|
}
|
|
|
|
addr, err := addr.Extract(host)
|
|
if err != nil {
|
|
addr = host
|
|
}
|
|
|
|
node := ®istry.Node{
|
|
Id: opts.Name + "-" + opts.Id,
|
|
Address: addr,
|
|
Port: port,
|
|
Metadata: opts.Metadata,
|
|
}
|
|
|
|
node.Metadata["server"] = "http"
|
|
|
|
return ®istry.Service{
|
|
Name: opts.Name,
|
|
Version: opts.Version,
|
|
Nodes: []*registry.Node{node},
|
|
}
|
|
}
|