diff --git a/exchange/exchange.go b/exchange/exchange.go index 76a4d302867..e92e813f6bb 100644 --- a/exchange/exchange.go +++ b/exchange/exchange.go @@ -615,11 +615,11 @@ func (e *exchange) getBidCacheInfo(bid *pbsOrtbBid, auc *auction) (openrtb_ext.E if cacheUUID, found = auc.cacheIds[bid.bid]; found { cacheInfo.CacheId = cacheUUID extCacheHost, extCachePath = e.cache.GetExtCacheData() - cacheInfo.Url = extCacheHost + "/" + extCachePath + "?uuid=" + cacheUUID + cacheInfo.Url = extCacheHost + extCachePath + "?uuid=" + cacheUUID } else if cacheUUID, found = auc.vastCacheIds[bid.bid]; found { cacheInfo.CacheId = cacheUUID extCacheHost, extCachePath = e.cache.GetExtCacheData() - cacheInfo.Url = extCacheHost + "/" + extCachePath + "?uuid=" + cacheUUID + cacheInfo.Url = extCacheHost + extCachePath + "?uuid=" + cacheUUID } } return cacheInfo, found diff --git a/exchange/exchange_test.go b/exchange/exchange_test.go index f5bf23d5dce..2b0e37e678c 100644 --- a/exchange/exchange_test.go +++ b/exchange/exchange_test.go @@ -1291,7 +1291,7 @@ func mockHandler(statusCode int, getBody string, postBody string) http.Handler { type wellBehavedCache struct{} func (c *wellBehavedCache) GetExtCacheData() (string, string) { - return "www.pbcserver.com", "pbcache/endpoint" + return "www.pbcserver.com", "/pbcache/endpoint" } func (c *wellBehavedCache) PutJson(ctx context.Context, values []prebid_cache_client.Cacheable) ([]string, []error) { diff --git a/exchange/exchangetest/include-brand-category.json b/exchange/exchangetest/include-brand-category.json index f27c0e6dc91..68e93e3ad9a 100644 --- a/exchange/exchangetest/include-brand-category.json +++ b/exchange/exchangetest/include-brand-category.json @@ -106,8 +106,8 @@ "hb_bidder_appnexus": "appnexus", "hb_cache_host": "www.pbcserver.com", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_pb": "0.20", "hb_pb_appnexus": "0.20", "hb_pb_cat_dur": "0.20_VideoGames_0s", @@ -128,8 +128,8 @@ "hb_bidder_appnexus": "appnexus", "hb_cache_host": "www.pbcserver.com", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_pb": "0.50", "hb_pb_appnexus": "0.50", "hb_pb_cat_dur": "0.50_HomeDecor_0s", diff --git a/exchange/exchangetest/targeting-cache-vast-banner.json b/exchange/exchangetest/targeting-cache-vast-banner.json index 5d0db2749f5..215485cc2ba 100644 --- a/exchange/exchangetest/targeting-cache-vast-banner.json +++ b/exchange/exchangetest/targeting-cache-vast-banner.json @@ -71,8 +71,8 @@ "hb_bidder_appnexus": "appnexus", "hb_cache_host": "www.pbcserver.com", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_pb": "0.00", "hb_pb_appnexus": "0.00", "hb_size": "200x250", diff --git a/exchange/exchangetest/targeting-cache-vast.json b/exchange/exchangetest/targeting-cache-vast.json index 743f2ce31ba..f348dd1b29d 100644 --- a/exchange/exchangetest/targeting-cache-vast.json +++ b/exchange/exchangetest/targeting-cache-vast.json @@ -78,8 +78,8 @@ "hb_bidder_appnexus": "appnexus", "hb_cache_host": "www.pbcserver.com", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_uuid": "0", "hb_uuid_appnexus": "0", "hb_pb": "0.00", diff --git a/exchange/exchangetest/targeting-cache-zero.json b/exchange/exchangetest/targeting-cache-zero.json index abe9df10ef0..5130153026a 100644 --- a/exchange/exchangetest/targeting-cache-zero.json +++ b/exchange/exchangetest/targeting-cache-zero.json @@ -83,8 +83,8 @@ "hb_cache_host_appnex": "www.pbcserver.com", "hb_cache_id": "0", "hb_cache_id_appnexus": "0", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_uuid": "1", "hb_uuid_appnexus": "1", "hb_pb": "0.00", diff --git a/exchange/exchangetest/targeting-mobile.json b/exchange/exchangetest/targeting-mobile.json index d56615656c3..f3962cff40f 100644 --- a/exchange/exchangetest/targeting-mobile.json +++ b/exchange/exchangetest/targeting-mobile.json @@ -123,7 +123,7 @@ "targeting": { "hb_bidder_audienceNe": "audienceNetwork", "hb_cache_host_audien": "www.pbcserver.com", - "hb_cache_path_audien": "pbcache/endpoint", + "hb_cache_path_audien": "/pbcache/endpoint", "hb_pb_audienceNetwor": "0.50", "hb_size_audienceNetw": "200x250", "hb_env_audienceNetwo": "mobile-app" @@ -148,8 +148,8 @@ "hb_bidder": "appnexus", "hb_cache_host": "www.pbcserver.com", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_bidder_appnexus": "appnexus", "hb_pb": "0.70", "hb_pb_appnexus": "0.70", @@ -188,8 +188,8 @@ "hb_bidder": "appnexus", "hb_cache_host": "www.pbcserver.com", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_bidder_appnexus": "appnexus", "hb_pb": "0.60", "hb_pb_appnexus": "0.60", diff --git a/exchange/exchangetest/targeting-no-winners.json b/exchange/exchangetest/targeting-no-winners.json index 73bf812cfb6..891ff0ffc99 100644 --- a/exchange/exchangetest/targeting-no-winners.json +++ b/exchange/exchangetest/targeting-no-winners.json @@ -125,7 +125,7 @@ "targeting": { "hb_bidder_audienceNe": "audienceNetwork", "hb_cache_host_audien": "www.pbcserver.com", - "hb_cache_path_audien": "pbcache/endpoint", + "hb_cache_path_audien": "/pbcache/endpoint", "hb_pb_audienceNetwor": "0.50", "hb_size_audienceNetw": "200x250" } @@ -148,7 +148,7 @@ "targeting": { "hb_bidder_appnexus": "appnexus", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_pb_appnexus": "0.70", "hb_size_appnexus": "200x250" } @@ -181,7 +181,7 @@ "targeting": { "hb_bidder_appnexus": "appnexus", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_pb_appnexus": "0.60", "hb_size_appnexus": "300x500" } diff --git a/exchange/exchangetest/targeting-only-winners.json b/exchange/exchangetest/targeting-only-winners.json index 807b7b6c8aa..5f449af3c5c 100644 --- a/exchange/exchangetest/targeting-only-winners.json +++ b/exchange/exchangetest/targeting-only-winners.json @@ -141,7 +141,7 @@ "targeting": { "hb_bidder": "appnexus", "hb_cache_host": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", "hb_pb": "0.70", "hb_size": "200x250" } @@ -174,7 +174,7 @@ "targeting": { "hb_bidder": "appnexus", "hb_cache_host": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", "hb_pb": "0.60", "hb_size": "300x500" } diff --git a/exchange/exchangetest/targeting-with-winners.json b/exchange/exchangetest/targeting-with-winners.json index 208b3feb019..f081b7ee09f 100644 --- a/exchange/exchangetest/targeting-with-winners.json +++ b/exchange/exchangetest/targeting-with-winners.json @@ -123,7 +123,7 @@ "targeting": { "hb_bidder_audienceNe": "audienceNetwork", "hb_cache_host_audien": "www.pbcserver.com", - "hb_cache_path_audien": "pbcache/endpoint", + "hb_cache_path_audien": "/pbcache/endpoint", "hb_pb_audienceNetwor": "0.50", "hb_size_audienceNetw": "200x250" } @@ -148,8 +148,8 @@ "hb_bidder_appnexus": "appnexus", "hb_cache_host": "www.pbcserver.com", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_pb": "0.70", "hb_pb_appnexus": "0.70", "hb_size": "200x250", @@ -186,8 +186,8 @@ "hb_bidder_appnexus": "appnexus", "hb_cache_host": "www.pbcserver.com", "hb_cache_host_appnex": "www.pbcserver.com", - "hb_cache_path": "pbcache/endpoint", - "hb_cache_path_appnex": "pbcache/endpoint", + "hb_cache_path": "/pbcache/endpoint", + "hb_cache_path_appnex": "/pbcache/endpoint", "hb_pb": "0.60", "hb_pb_appnexus": "0.60", "hb_size": "300x500", diff --git a/prebid_cache_client/client.go b/prebid_cache_client/client.go index 88da5c3ac0d..6da69f68243 100644 --- a/prebid_cache_client/client.go +++ b/prebid_cache_client/client.go @@ -72,9 +72,11 @@ type clientImpl struct { func (c *clientImpl) GetExtCacheData() (string, string) { path := c.externalCachePath if path == "/" { + // Only the slash for the path, remove it to empty path = "" - } else if strings.Index(path, "/") == 0 { - path = strings.TrimLeft(path, "/") + } else if len(path) > 0 && !strings.HasPrefix(path, "/") { + // Path defined but does not start with "/", prepend it + path = "/" + path } return c.externalCacheHost, path diff --git a/prebid_cache_client/client_test.go b/prebid_cache_client/client_test.go index cbeaa38a105..d3b5ee4bfaf 100644 --- a/prebid_cache_client/client_test.go +++ b/prebid_cache_client/client_test.go @@ -156,10 +156,10 @@ func TestStripCacheHostAndPath(t *testing.T) { { inExtCacheURL: config.ExternalCache{ Host: "prebid-server.prebid.org", - Path: "pbcache/endpoint", + Path: "/pbcache/endpoint", }, expectedHost: "prebid-server.prebid.org", - expectedPath: "pbcache/endpoint", + expectedPath: "/pbcache/endpoint", }, { inExtCacheURL: config.ExternalCache{ @@ -177,6 +177,22 @@ func TestStripCacheHostAndPath(t *testing.T) { expectedHost: "", expectedPath: "", }, + { + inExtCacheURL: config.ExternalCache{ + Host: "prebid-server.prebid.org", + Path: "pbcache/endpoint", + }, + expectedHost: "prebid-server.prebid.org", + expectedPath: "/pbcache/endpoint", + }, + { + inExtCacheURL: config.ExternalCache{ + Host: "prebidcache.net", + Path: "/", + }, + expectedHost: "prebidcache.net", + expectedPath: "", + }, } for _, test := range testInput { //start client