diff --git a/src/TibiaNewslist.go b/src/TibiaNewslist.go index 0c3c947..a95be11 100644 --- a/src/TibiaNewslist.go +++ b/src/TibiaNewslist.go @@ -66,7 +66,7 @@ func TibiaNewslistImpl(days int, BoxContentHTML string, handlerURL string) (News OneNews.TibiaURL = NewsSplit[0] + NewsID if TibiaDataHost != "" { - OneNews.ApiURL = "https://" + TibiaDataHost + "/v4/news/id/" + NewsID + OneNews.ApiURL = TibiaDataProtocol + "://" + TibiaDataHost + "/v4/news/id/" + NewsID } // add to NewsListData for response diff --git a/src/main.go b/src/main.go index d9e897c..61a9a3b 100644 --- a/src/main.go +++ b/src/main.go @@ -20,8 +20,9 @@ var ( TibiaDataRestrictionMode bool // TibiaData app settings - TibiaDataHost string // set through env TIBIADATA_HOST TibiaDataAPIDetails APIDetails // containing information from build + TibiaDataHost string // set through env TIBIADATA_HOST + TibiaDataProtocol = "https" // can be overridden by env TIBIADATA_PROTOCOL // TibiaData app details set to release/build on GitHub TibiaDataBuildRelease = "unknown" // will be set by GitHub Actions (to release number) @@ -48,22 +49,8 @@ var ( // @BasePath / func init() { - // Generating TibiaDataUserAgent with TibiaDataUserAgentGenerator function - TibiaDataUserAgent = TibiaDataUserAgentGenerator(TibiaDataAPIversion) - - // Initiate the validator - err := validation.Initiate(TibiaDataUserAgent) - if err != nil { - panic(err) - } -} - -func main() { - // logging start of TibiaData - log.Printf("[info] TibiaData API starting..") - - // Running the TibiaDataInitializer function - TibiaDataInitializer() + // logging init of TibiaData + log.Printf("[info] TibiaData API initializing..") // Logging build information log.Printf("[info] TibiaData API release: %s", TibiaDataBuildRelease) @@ -81,11 +68,31 @@ func main() { if getEnvAsBool("DEBUG_MODE", false) { // Setting debug to true for more logging TibiaDataDebug = true + } + log.Printf("[info] TibiaData API debug-mode: %t", TibiaDataDebug) + // Running the TibiaDataInitializer function + TibiaDataInitializer() + + // Generating TibiaDataUserAgent with TibiaDataUserAgentGenerator function + TibiaDataUserAgent = TibiaDataUserAgentGenerator(TibiaDataAPIversion) + + if TibiaDataDebug { // Logging user-agent string log.Printf("[debug] TibiaData API User-Agent: %s", TibiaDataUserAgent) } - log.Printf("[info] TibiaData API debug-mode: %t", TibiaDataDebug) + + // Initiate the validator + err := validation.Initiate(TibiaDataUserAgent) + if err != nil { + panic(err) + } + +} + +func main() { + // logging start of TibiaData + log.Printf("[info] TibiaData API starting..") // Starting the webserver runWebServer() @@ -100,7 +107,12 @@ func TibiaDataInitializer() { // Adding information of host if isEnvExist("TIBIADATA_HOST") { - TibiaDataHost = "+https://" + getEnv("TIBIADATA_HOST", "") + TibiaDataHost = getEnv("TIBIADATA_HOST", "") + log.Println("[info] TibiaData API hostname: " + TibiaDataHost) + } + if isEnvExist("TIBIADATA_PROTOCOL") { + TibiaDataProtocol = getEnv("TIBIADATA_PROTOCOL", "https") + log.Println("[info] TibiaData API protocol: " + TibiaDataProtocol) } // Setting TibiaDataProxyDomain diff --git a/src/main_test.go b/src/main_test.go index 5ff7b53..1b8868c 100644 --- a/src/main_test.go +++ b/src/main_test.go @@ -7,19 +7,30 @@ import ( ) func TestInit(t *testing.T) { - const expectedUserAgent = "TibiaData-API/v4 (release/unknown; build/manual; commit/-; edition/open-source; unittest.example.com)" + const ( + expectedUserAgent = "TibiaData-API/v4 (release/unknown; build/manual; commit/-; edition/open-source)" + expectedUserAgentHost = "TibiaData-API/v4 (release/unknown; build/manual; commit/-; edition/open-source; +https://unittest.example.com)" + ) + TibiaDataHost = "" TibiaDataUserAgent = TibiaDataUserAgentGenerator(TibiaDataAPIversion) assert.Equal(t, expectedUserAgent, TibiaDataUserAgent) + + TibiaDataHost = "unittest.example.com" + TibiaDataUserAgent = TibiaDataUserAgentGenerator(TibiaDataAPIversion) + assert.Equal(t, expectedUserAgentHost, TibiaDataUserAgent) } func TestTibiaDataInitializer(t *testing.T) { assert := assert.New(t) + TibiaDataHost = "unittest.example.com" + // Call the function to be tested TibiaDataInitializer() // Check that the variables have been set correctly assert.Equal("open-source", TibiaDataBuildEdition) + assert.Equal("https", TibiaDataProtocol) assert.Equal("unittest.example.com", TibiaDataHost) } diff --git a/src/webserver.go b/src/webserver.go index 66dfcd1..41e131c 100644 --- a/src/webserver.go +++ b/src/webserver.go @@ -1183,8 +1183,13 @@ func TibiaDataUserAgentGenerator(version int) string { "build/" + TibiaDataBuildBuilder, "commit/" + TibiaDataBuildCommit, "edition/" + TibiaDataBuildEdition, - TibiaDataHost, } + + // adding TibiaDataHost if set + if TibiaDataHost != "" { + useragentDetails = append(useragentDetails, "+"+TibiaDataProtocol+"://"+TibiaDataHost) + } + useragent += " (" + strings.Join(useragentDetails, "; ") + ")" return useragent