diff --git a/src/main/java/org/prebid/server/settings/ApplicationSettings.java b/src/main/java/org/prebid/server/settings/ApplicationSettings.java index aa4c6eb1678..2d78a3a6bdc 100644 --- a/src/main/java/org/prebid/server/settings/ApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/ApplicationSettings.java @@ -25,11 +25,6 @@ public interface ApplicationSettings { */ Future getAccountById(String accountId, Timeout timeout); - /** - * Returns configuration for the given adUnit config ID. - */ - Future getAdUnitConfigById(String adUnitConfigId, Timeout timeout); - /** * Fetches stored requests and imps by IDs. */ diff --git a/src/main/java/org/prebid/server/settings/CachingApplicationSettings.java b/src/main/java/org/prebid/server/settings/CachingApplicationSettings.java index a4817568ce5..92053289243 100644 --- a/src/main/java/org/prebid/server/settings/CachingApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/CachingApplicationSettings.java @@ -35,7 +35,6 @@ public class CachingApplicationSettings implements ApplicationSettings { private final Map accountCache; private final Map accountToErrorCache; - private final Map adUnitConfigCache; private final SettingsCache cache; private final SettingsCache ampCache; private final SettingsCache videoCache; @@ -55,7 +54,6 @@ public CachingApplicationSettings(ApplicationSettings delegate, this.delegate = Objects.requireNonNull(delegate); this.accountCache = SettingsCache.createCache(ttl, size); this.accountToErrorCache = SettingsCache.createCache(ttl, size); - this.adUnitConfigCache = SettingsCache.createCache(ttl, size); this.cache = Objects.requireNonNull(cache); this.ampCache = Objects.requireNonNull(ampCache); this.videoCache = Objects.requireNonNull(videoCache); @@ -76,20 +74,6 @@ public Future getAccountById(String accountId, Timeout timeout) { event -> metrics.updateSettingsCacheEventMetric(MetricName.account, event)); } - /** - * Retrieves adUnit config from cache or delegates it to original fetcher. - */ - @Override - public Future getAdUnitConfigById(String adUnitConfigId, Timeout timeout) { - return getFromCacheOrDelegate( - adUnitConfigCache, - accountToErrorCache, - adUnitConfigId, - timeout, - delegate::getAdUnitConfigById, - CachingApplicationSettings::noOp); - } - /** * Retrieves stored data from cache or delegates it to original fetcher. */ @@ -247,6 +231,4 @@ public void invalidateAccountCache(String accountId) { logger.debug("Account with id {0} was invalidated", accountId); } - private static void noOp(ANY any) { - } } diff --git a/src/main/java/org/prebid/server/settings/CompositeApplicationSettings.java b/src/main/java/org/prebid/server/settings/CompositeApplicationSettings.java index 086e5a8526a..1b14c39b39a 100644 --- a/src/main/java/org/prebid/server/settings/CompositeApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/CompositeApplicationSettings.java @@ -2,8 +2,8 @@ import io.vertx.core.Future; import org.prebid.server.execution.Timeout; -import org.prebid.server.settings.model.Account; import org.prebid.server.settings.helper.StoredDataFetcher; +import org.prebid.server.settings.model.Account; import org.prebid.server.settings.model.StoredDataResult; import org.prebid.server.settings.model.StoredResponseDataResult; @@ -51,15 +51,6 @@ public Future getAccountById(String accountId, Timeout timeout) { return proxy.getAccountById(accountId, timeout); } - /** - * Runs a process to get AdUnit config by id from a chain of retrievers - * and returns {@link Future<{@link String}>}. - */ - @Override - public Future getAdUnitConfigById(String adUnitConfigId, Timeout timeout) { - return proxy.getAdUnitConfigById(adUnitConfigId, timeout); - } - /** * Runs a process to get stored requests by a collection of ids from a chain of retrievers * and returns {@link Future<{@link StoredDataResult }>}. @@ -114,12 +105,6 @@ public Future getAccountById(String accountId, Timeout timeout) { next != null ? next::getAccountById : null); } - @Override - public Future getAdUnitConfigById(String adUnitConfigId, Timeout timeout) { - return getConfig(adUnitConfigId, timeout, applicationSettings::getAdUnitConfigById, - next != null ? next::getAdUnitConfigById : null); - } - private static Future getConfig(String key, Timeout timeout, BiFunction> retriever, BiFunction> nextRetriever) { diff --git a/src/main/java/org/prebid/server/settings/EnrichingApplicationSettings.java b/src/main/java/org/prebid/server/settings/EnrichingApplicationSettings.java index 0a5df0756cb..7e8bc9665c1 100644 --- a/src/main/java/org/prebid/server/settings/EnrichingApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/EnrichingApplicationSettings.java @@ -32,11 +32,6 @@ public Future getAccountById(String accountId, Timeout timeout) { .otherwise(Account.empty(accountId).merge(defaultAccount)); } - @Override - public Future getAdUnitConfigById(String adUnitConfigId, Timeout timeout) { - return delegate.getAdUnitConfigById(adUnitConfigId, timeout); - } - @Override public Future getStoredData(String accountId, Set requestIds, diff --git a/src/main/java/org/prebid/server/settings/FileApplicationSettings.java b/src/main/java/org/prebid/server/settings/FileApplicationSettings.java index 768f9825058..b7b805ea97b 100644 --- a/src/main/java/org/prebid/server/settings/FileApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/FileApplicationSettings.java @@ -5,12 +5,10 @@ import io.vertx.core.buffer.Buffer; import io.vertx.core.file.FileSystem; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.prebid.server.exception.PreBidException; import org.prebid.server.execution.Timeout; import org.prebid.server.settings.model.Account; -import org.prebid.server.settings.model.AdUnitConfig; import org.prebid.server.settings.model.SettingsFile; import org.prebid.server.settings.model.StoredDataResult; import org.prebid.server.settings.model.StoredDataType; @@ -41,7 +39,6 @@ public class FileApplicationSettings implements ApplicationSettings { private static final String JSON_SUFFIX = ".json"; private final Map accounts; - private final Map configs; private final Map storedIdToRequest; private final Map storedIdToImp; private final Map storedIdToSeatBid; @@ -56,10 +53,6 @@ public FileApplicationSettings(FileSystem fileSystem, String settingsFileName, S Account::getId, Function.identity()); - configs = toMap(settingsFile.getConfigs(), - AdUnitConfig::getId, - config -> ObjectUtils.defaultIfNull(config.getConfig(), StringUtils.EMPTY)); - this.storedIdToRequest = readStoredData(fileSystem, Objects.requireNonNull(storedRequestsDir)); this.storedIdToImp = readStoredData(fileSystem, Objects.requireNonNull(storedImpsDir)); this.storedIdToSeatBid = readStoredData(fileSystem, Objects.requireNonNull(storedResponsesDir)); @@ -70,11 +63,6 @@ public Future getAccountById(String accountId, Timeout timeout) { return mapValueToFuture(accounts, accountId, "Account"); } - @Override - public Future getAdUnitConfigById(String adUnitConfigId, Timeout timeout) { - return mapValueToFuture(configs, adUnitConfigId, "AdUnitConfig"); - } - /** * Creates {@link StoredDataResult} by checking if any ids are missed in storedRequest map * and adding an error to list for each missed Id diff --git a/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java b/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java index 23d0d870b0b..9fcdd816305 100644 --- a/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/HttpApplicationSettings.java @@ -137,14 +137,6 @@ private Set toAccountsResult(int statusCode, String body, Set a return MapUtils.isNotEmpty(accounts) ? new HashSet<>(accounts.values()) : Collections.emptySet(); } - /** - * Not supported and returns failed result. - */ - @Override - public Future getAdUnitConfigById(String adUnitConfigId, Timeout timeout) { - return Future.failedFuture(new PreBidException("Not supported")); - } - /** * Runs a process to get stored requests by a collection of ids from http service * and returns {@link Future<{@link StoredDataResult }>} diff --git a/src/main/java/org/prebid/server/settings/JdbcApplicationSettings.java b/src/main/java/org/prebid/server/settings/JdbcApplicationSettings.java index 952d11e24a7..9c1aae70b5c 100644 --- a/src/main/java/org/prebid/server/settings/JdbcApplicationSettings.java +++ b/src/main/java/org/prebid/server/settings/JdbcApplicationSettings.java @@ -131,19 +131,6 @@ public Future getAccountById(String accountId, Timeout timeout) { .compose(result -> failedIfNull(result, accountId, "Account")); } - /** - * Runs a process to get AdUnit config by id from database - * and returns {@link Future<{@link String}>}. - */ - @Override - public Future getAdUnitConfigById(String adUnitConfigId, Timeout timeout) { - return jdbcClient.executeQuery("SELECT config FROM s2sconfig_config where uuid = ? LIMIT 1", - Collections.singletonList(adUnitConfigId), - result -> mapToModelOrError(result, row -> row.getString(0)), - timeout) - .compose(result -> failedIfNull(result, adUnitConfigId, "AdUnitConfig")); - } - /** * Transforms the first row of {@link ResultSet} to required object or returns null. *

diff --git a/src/main/java/org/prebid/server/settings/model/AdUnitConfig.java b/src/main/java/org/prebid/server/settings/model/AdUnitConfig.java deleted file mode 100644 index a3542a487cb..00000000000 --- a/src/main/java/org/prebid/server/settings/model/AdUnitConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.prebid.server.settings.model; - -import lombok.AllArgsConstructor; -import lombok.Value; - -@AllArgsConstructor(staticName = "of") -@Value -public class AdUnitConfig { - - String id; - - String config; -} diff --git a/src/main/java/org/prebid/server/settings/model/SettingsFile.java b/src/main/java/org/prebid/server/settings/model/SettingsFile.java index bf3dc3cd74d..d757cf19dde 100644 --- a/src/main/java/org/prebid/server/settings/model/SettingsFile.java +++ b/src/main/java/org/prebid/server/settings/model/SettingsFile.java @@ -9,7 +9,5 @@ public class SettingsFile { List accounts; - List configs; - List domains; } diff --git a/src/test/java/org/prebid/server/settings/CachingApplicationSettingsTest.java b/src/test/java/org/prebid/server/settings/CachingApplicationSettingsTest.java index f57089c51be..3bfbbe3570a 100644 --- a/src/test/java/org/prebid/server/settings/CachingApplicationSettingsTest.java +++ b/src/test/java/org/prebid/server/settings/CachingApplicationSettingsTest.java @@ -158,82 +158,6 @@ public void getAccountByIdShouldUpdateMetrics() { verify(metrics).updateSettingsCacheEventMetric(eq(MetricName.account), eq(MetricName.hit)); } - @Test - public void getAdUnitConfigByIdShouldReturnResultFromCacheOnSuccessiveCalls() { - // given - given(applicationSettings.getAdUnitConfigById(eq("adUnitConfigId"), same(timeout))) - .willReturn(Future.succeededFuture("config")); - - // when - final Future future = cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - - // then - assertThat(future.succeeded()).isTrue(); - assertThat(future.result()).isEqualTo("config"); - verify(applicationSettings).getAdUnitConfigById(eq("adUnitConfigId"), same(timeout)); - verifyNoMoreInteractions(applicationSettings); - } - - @Test - public void getAdUnitConfigByIdShouldPropagateFailure() { - // given - given(applicationSettings.getAdUnitConfigById(anyString(), any())) - .willReturn(Future.failedFuture(new PreBidException("error"))); - - // when - final Future future = - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - - // then - assertThat(future.failed()).isTrue(); - assertThat(future.cause()) - .isInstanceOf(PreBidException.class) - .hasMessage("error"); - } - - @Test - public void getAdUnitConfigByIdShouldCachePreBidException() { - // given - given(applicationSettings.getAdUnitConfigById(anyString(), any())) - .willReturn(Future.failedFuture(new PreBidException("error"))); - - // when - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - final Future lastFuture = - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - - // then - verify(applicationSettings).getAdUnitConfigById(anyString(), any()); - assertThat(lastFuture.failed()).isTrue(); - assertThat(lastFuture.cause()) - .isInstanceOf(PreBidException.class) - .hasMessage("error"); - } - - @Test - public void getAdUnitConfigByIdShouldNotCacheNotPreBidException() { - // given - given(applicationSettings.getAdUnitConfigById(anyString(), any())) - .willReturn(Future.failedFuture(new InvalidRequestException("error"))); - - // when - - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - final Future lastFuture = - cachingApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - - // then - verify(applicationSettings, times(3)).getAdUnitConfigById(anyString(), any()); - assertThat(lastFuture.failed()).isTrue(); - assertThat(lastFuture.cause()) - .isInstanceOf(InvalidRequestException.class) - .hasMessage("error"); - } - @Test public void getStoredDataShouldReturnResultOnSuccessiveCalls() { // given diff --git a/src/test/java/org/prebid/server/settings/CompositeApplicationSettingsTest.java b/src/test/java/org/prebid/server/settings/CompositeApplicationSettingsTest.java index ba77997ec56..47fdcdd4182 100644 --- a/src/test/java/org/prebid/server/settings/CompositeApplicationSettingsTest.java +++ b/src/test/java/org/prebid/server/settings/CompositeApplicationSettingsTest.java @@ -107,55 +107,6 @@ public void getAccountByIdShouldReturnEmptyResultIfAllDelegatesFail() { assertThat(future.cause().getMessage()).isEqualTo("error2"); } - @Test - public void getAdUnitConfigByIdShouldReturnConfigFromFirstDelegateIfPresent() { - // given - given(delegate1.getAdUnitConfigById(anyString(), any())) - .willReturn(Future.succeededFuture("adUnitConfig1")); - - // when - final Future future = compositeApplicationSettings.getAdUnitConfigById("ignore", null); - - // then - assertThat(future.succeeded()).isTrue(); - assertThat(future.result()).isEqualTo("adUnitConfig1"); - verifyZeroInteractions(delegate2); - } - - @Test - public void getAdUnitConfigByIdShouldReturnConfigFromSecondDelegateIfFirstDelegateFails() { - // given - given(delegate1.getAdUnitConfigById(anyString(), any())) - .willReturn(Future.failedFuture(new PreBidException("error1"))); - - given(delegate2.getAdUnitConfigById(anyString(), any())) - .willReturn(Future.succeededFuture("adUnitConfig1")); - - // when - final Future future = compositeApplicationSettings.getAdUnitConfigById("ignore", null); - - // then - assertThat(future.succeeded()).isTrue(); - assertThat(future.result()).isEqualTo("adUnitConfig1"); - } - - @Test - public void getAdUnitConfigByIdShouldReturnEmptyResultIfAllDelegatesFail() { - // given - given(delegate1.getAdUnitConfigById(anyString(), any())) - .willReturn(Future.failedFuture(new PreBidException("error1"))); - - given(delegate2.getAdUnitConfigById(anyString(), any())) - .willReturn(Future.failedFuture(new PreBidException("error2"))); - - // when - final Future future = compositeApplicationSettings.getAdUnitConfigById("ignore", null); - - // then - assertThat(future.failed()).isTrue(); - assertThat(future.cause().getMessage()).isEqualTo("error2"); - } - @Test public void getStoredDataShouldReturnResultFromFirstDelegateIfPresent() { // given diff --git a/src/test/java/org/prebid/server/settings/FileApplicationSettingsTest.java b/src/test/java/org/prebid/server/settings/FileApplicationSettingsTest.java index 9581f3cbb5f..4d7a7fbce1c 100644 --- a/src/test/java/org/prebid/server/settings/FileApplicationSettingsTest.java +++ b/src/test/java/org/prebid/server/settings/FileApplicationSettingsTest.java @@ -12,8 +12,8 @@ import org.prebid.server.settings.model.AccountAnalyticsConfig; import org.prebid.server.settings.model.AccountBidValidationConfig; import org.prebid.server.settings.model.AccountGdprConfig; -import org.prebid.server.settings.model.BidValidationEnforcement; import org.prebid.server.settings.model.AccountStatus; +import org.prebid.server.settings.model.BidValidationEnforcement; import org.prebid.server.settings.model.EnabledForRequestType; import org.prebid.server.settings.model.EnforcePurpose; import org.prebid.server.settings.model.Purpose; @@ -60,7 +60,7 @@ public void creationShouldFailIfFileCouldNotBeParsed() { @Test public void getAccountByIdShouldReturnEmptyWhenAccountsAreMissing() { // given - given(fileSystem.readFileBlocking(anyString())).willReturn(Buffer.buffer("configs:")); + given(fileSystem.readFileBlocking(anyString())).willReturn(Buffer.buffer("domains:")); final FileApplicationSettings applicationSettings = new FileApplicationSettings(fileSystem, "ignore", "ignore", "ignore", "ignore"); @@ -168,56 +168,6 @@ public void getAccountByIdShouldReturnEmptyForUnknownAccount() { assertThat(account.failed()).isTrue(); } - @Test - public void getAdUnitConfigByIdShouldReturnEmptyWhenConfigsAreMissing() { - // given - given(fileSystem.readFileBlocking(anyString())).willReturn(Buffer.buffer("accounts:")); - - final FileApplicationSettings applicationSettings = - new FileApplicationSettings(fileSystem, "ignore", "ignore", "ignore", "ignore"); - - // when - final Future config = applicationSettings.getAdUnitConfigById("123", null); - - // then - assertThat(config.failed()).isTrue(); - } - - @Test - public void getAdUnitConfigByIdShouldReturnPresentConfig() { - // given - given(fileSystem.readFileBlocking(anyString())).willReturn(Buffer.buffer( - "configs: [ {id: '123', config: '{\"bidder\": \"rubicon\"}'}, {id: '456'} ]")); - - final FileApplicationSettings applicationSettings = - new FileApplicationSettings(fileSystem, "ignore", "ignore", "ignore", "ignore"); - - // when - final Future adUnitConfigById1 = applicationSettings.getAdUnitConfigById("123", null); - final Future adUnitConfigById2 = applicationSettings.getAdUnitConfigById("456", null); - - // then - assertThat(adUnitConfigById1.succeeded()).isTrue(); - assertThat(adUnitConfigById1.result()).isEqualTo("{\"bidder\": \"rubicon\"}"); - assertThat(adUnitConfigById2.succeeded()).isTrue(); - assertThat(adUnitConfigById2.result()).isEqualTo(""); - } - - @Test - public void getAdUnitConfigByIdShouldReturnEmptyForUnknownConfig() { - // given - given(fileSystem.readFileBlocking(anyString())).willReturn(Buffer.buffer("configs: [ id: '123', id: '456' ]")); - - final FileApplicationSettings applicationSettings = - new FileApplicationSettings(fileSystem, "ignore", "ignore", "ignore", "ignore"); - - // when - final Future config = applicationSettings.getAdUnitConfigById("789", null); - - // then - assertThat(config.failed()).isTrue(); - } - @Test public void getStoredDataShouldReturnResultWithNotFoundErrorForNonExistingRequestId() { // given diff --git a/src/test/java/org/prebid/server/settings/HttpApplicationSettingsTest.java b/src/test/java/org/prebid/server/settings/HttpApplicationSettingsTest.java index 2cf42d4bd65..79cd90ff987 100644 --- a/src/test/java/org/prebid/server/settings/HttpApplicationSettingsTest.java +++ b/src/test/java/org/prebid/server/settings/HttpApplicationSettingsTest.java @@ -182,16 +182,6 @@ public void getAccountByIdShouldReturnErrorIfResponseHasInvalidStructure() { + "failed to parse response: Failed to decode:"); } - @Test - public void getAdUnitConfigByIdShouldReturnEmptyResult() { - // when - final Future future = httpApplicationSettings.getAdUnitConfigById(null, null); - - // then - assertThat(future.failed()).isTrue(); - assertThat(future.cause()).isInstanceOf(PreBidException.class).hasMessage("Not supported"); - } - @Test public void getStoredResponsesShouldReturnFailedFutureWithNotSupportedReason() { // when diff --git a/src/test/java/org/prebid/server/settings/JdbcApplicationSettingsTest.java b/src/test/java/org/prebid/server/settings/JdbcApplicationSettingsTest.java index 804791b7a9a..440bdea0545 100644 --- a/src/test/java/org/prebid/server/settings/JdbcApplicationSettingsTest.java +++ b/src/test/java/org/prebid/server/settings/JdbcApplicationSettingsTest.java @@ -117,8 +117,6 @@ public static void beforeClass() throws SQLException { + "tcf_config varchar(512), analytics_sampling_factor INT, truncate_target_attr INT, " + "default_integration varchar(64), analytics_config varchar(512), bid_validations varchar(512), " + "status varchar(25));"); - connection.createStatement().execute("CREATE TABLE s2sconfig_config (id SERIAL PRIMARY KEY, uuid varchar(40) " - + "NOT NULL, config varchar(512));"); connection.createStatement().execute("CREATE TABLE stored_requests (id SERIAL PRIMARY KEY, " + "accountId varchar(40) NOT NULL, reqid varchar(40) NOT NULL, requestData varchar(512));"); connection.createStatement().execute("CREATE TABLE stored_requests2 (id SERIAL PRIMARY KEY, " @@ -140,8 +138,6 @@ public static void beforeClass() throws SQLException { + "\"integration-enabled\": {\"amp\": true, \"app\": true, \"video\": true, \"web\": true}}', 1, 0, " + "'web', '{\"auction-events\": {\"amp\": true}}', '{\"banner-creative-max-size\": \"enforce\"}', " + "'active');"); - connection.createStatement().execute( - "insert into s2sconfig_config (uuid, config) values ('adUnitConfigId', 'config');"); connection.createStatement().execute( "insert into stored_requests (accountId, reqid, requestData) values ('1001', '1','value1');"); connection.createStatement().execute( @@ -252,33 +248,6 @@ public void getAccountByIdShouldTolerateAccountWithoutStatusDefined(TestContext })); } - @Test - public void getAdUnitConfigByIdShouldReturnConfig(TestContext context) { - // when - final Future future = jdbcApplicationSettings.getAdUnitConfigById("adUnitConfigId", timeout); - - // then - final Async async = context.async(); - future.setHandler(context.asyncAssertSuccess(config -> { - assertThat(config).isEqualTo("config"); - async.complete(); - })); - } - - @Test - public void getAdUnitConfigByIdShouldFailIfConfigNotFound(TestContext context) { - // when - final Future future = jdbcApplicationSettings.getAdUnitConfigById("non-existing", timeout); - - // then - final Async async = context.async(); - future.setHandler(context.asyncAssertFailure(exception -> { - assertThat(exception).isInstanceOf(PreBidException.class) - .hasMessage("AdUnitConfig not found: non-existing"); - async.complete(); - })); - } - @Test public void getStoredDataShouldReturnExpectedResult(TestContext context) { // when diff --git a/src/test/resources/org/prebid/server/it/test-app-settings.yaml b/src/test/resources/org/prebid/server/it/test-app-settings.yaml index 80005f45c2f..11fecd164ff 100644 --- a/src/test/resources/org/prebid/server/it/test-app-settings.yaml +++ b/src/test/resources/org/prebid/server/it/test-app-settings.yaml @@ -9,19 +9,6 @@ accounts: - id: 2763 - id: 5001 eventsEnabled: true -configs: - - id: 14062 - config: > - [{"bid_id": "bidId2", - "bidder": "rubicon", - "params": { - "accountId": 5001, - "siteId": 6001, - "zoneId": 7001 - } - }] - - id: 1001 - - id: 2763 domains: - rubiconproject.com - www.rubiconproject.com