diff --git a/internal/endpoint/endpoint.go b/internal/endpoint/endpoint.go new file mode 100644 index 0000000..160b694 --- /dev/null +++ b/internal/endpoint/endpoint.go @@ -0,0 +1,34 @@ +package endpoint + +import ( + "net/url" +) + +// NewEndpoint new an Endpoint URL. +func NewEndpoint(scheme, host string) *url.URL { + return &url.URL{Scheme: scheme, Host: host} +} + +// ParseEndpoint parses an Endpoint URL. +func ParseEndpoint(endpoints []string, scheme string) (string, error) { + for _, e := range endpoints { + u, err := url.Parse(e) + if err != nil { + return "", err + } + + if u.Scheme == scheme { + return u.Host, nil + } + } + return "", nil +} + +// Scheme is the scheme of endpoint url. +// examples: scheme="http",isSecure=true get "https" +func Scheme(scheme string, isSecure bool) string { + if isSecure { + return scheme + "s" + } + return scheme +}