package util import ( "net/http" "strings" "time" ) // GetServiceByHost returns a service's URL depending on what type of network // is accessed (www, i2p, yggdrasil). func GetServiceByHost(host, service string) string { if strings.HasSuffix(host, "i2p") { switch service { case "radio": return "http://radio.arav.i2p" case "files": return "http://files.arav.i2p" case "upload": return "http://upload.arav.i2p" case "git": return "http://git.arav.i2p" default: return "http://arav.i2p" } } else if strings.HasPrefix(host, "[300") { switch service { case "radio": return "http://[300:a98d:d6d0:8a08::e]" case "files": return "http://[300:a98d:d6d0:8a08::d]" case "upload": return "http://[300:a98d:d6d0:8a08::c]" case "git": return "http://[300:a98d:d6d0:8a08::b]" default: return "http://[300:a98d:d6d0:8a08::f]" } } else { switch service { case "radio": return "https://radio.arav.top" case "files": return "https://files.arav.top" case "upload": return "https://upload.arav.top" case "git": return "https://git.arav.top" default: return "https://arav.top" } } } // ToClientTimezone converts given time to timezone set in a // X-Client-Timezone header. If this header is not set, then // converts to UTC. func ToClientTimezone(t time.Time, r *http.Request) time.Time { if tz := r.Header.Get("X-Client-Timezone"); tz != "" { loc, err := time.LoadLocation(tz) if err != nil { return t.UTC() } return t.In(loc) } return t.UTC() }