diff --git a/src/libnmdc/libnmdc.go b/src/libnmdc/libnmdc.go index 8f7e122..0a3c253 100644 --- a/src/libnmdc/libnmdc.go +++ b/src/libnmdc/libnmdc.go @@ -16,14 +16,31 @@ type HubEventType int type HubAddress string +func (this *HubAddress) parse() url.URL { + parsed, err := url.Parse(strings.ToLower(string(*this))) + if err != nil || len(parsed.Host) == 0 { + parsed = &url.URL{ + Scheme: "nmdc", + Host: string(*this), + } + } + + // Add default port if not specified + if !strings.ContainsRune(parsed.Host, ':') { + parsed.Host = parsed.Host + ":411" + } + + return *parsed +} + func (this *HubAddress) IsSecure() bool { - parsed, _ := url.Parse(strings.ToLower(string(*this))) + parsed := this.parse() + return parsed.Scheme == "nmdcs" || parsed.Scheme == "dchubs" } func (this *HubAddress) GetHostOnly() string { - parsed, _ := url.Parse(strings.ToLower(string(*this))) - return parsed.Host + return this.parse().Host } const (