/** * Constructor used by Guice. * * @param session Used to pull authentication data. * @param authorizationHeaderProvider Used to population the authentication data into a header. * @param userAgentCombiner Used to populate the User-Agent header. * @param adWordsLibConfiguration Used to obtain configuration options affecting report requests. * @param responseInterceptor Response interceptor to use for requests generated by this factory * helper. */ @Inject ReportRequestFactoryHelper(AdWordsSession session, AuthorizationHeaderProvider authorizationHeaderProvider, UserAgentCombiner userAgentCombiner, HttpTransport httpTransport, AdWordsLibConfiguration adWordsLibConfiguration, ReportResponseInterceptor responseInterceptor) { this.session = session; this.authorizationHeaderProvider = authorizationHeaderProvider; this.userAgentCombiner = userAgentCombiner; this.httpTransport = httpTransport; this.reportDownloadTimeout = (session.getReportingConfiguration() != null && session.getReportingConfiguration().getReportDownloadTimeout() != null) ? session.getReportingConfiguration().getReportDownloadTimeout() : adWordsLibConfiguration.getReportDownloadTimeout(); this.responseInterceptor = responseInterceptor; }
ReportingConfiguration reportingConfiguration = session.getReportingConfiguration(); if (reportingConfiguration != null) { reportingConfiguration.validate(version); if (reportingConfiguration.isSkipReportHeader() != null) { httpHeaders.set("skipReportHeader", Boolean.toString(reportingConfiguration.isSkipReportHeader())); if (reportingConfiguration.isSkipColumnHeader() != null) { httpHeaders.set("skipColumnHeader", Boolean.toString(reportingConfiguration.isSkipColumnHeader())); if (reportingConfiguration.isSkipReportSummary() != null) { httpHeaders.set("skipReportSummary", Boolean.toString(reportingConfiguration.isSkipReportSummary())); if (reportingConfiguration.isIncludeZeroImpressions() != null) { httpHeaders.set( "includeZeroImpressions", Boolean.toString(reportingConfiguration.isIncludeZeroImpressions())); if (reportingConfiguration.isUseRawEnumValues() != null) { httpHeaders.set( "useRawEnumValues", Boolean.toString(reportingConfiguration.isUseRawEnumValues()));
/** * Returns a new instance of {@link ReportingConfiguration} based on the attributes * of this builder. */ public ReportingConfiguration build() { return new ReportingConfiguration(this); } }
@Test public void testValidate_supportedVersions_succeeds() { ReportingConfiguration config = new Builder() .skipReportHeader(true) .skipColumnHeader(true) .skipReportSummary(true) .includeZeroImpressions(true) .useRawEnumValues(true) // A timeout of 0 is acceptable. This means do not time out. .reportDownloadTimeout(0) .build(); config.validate("v201802"); assertTrue("Validation should succeed for v201802", true); config.validate("v201806"); assertTrue("Validation should succeed for v201806", true); config.validate("v201809"); assertTrue("Validation should succeed for v201809", true); }
@Test public void testValidate_negativeTimeout_fails() { ReportingConfiguration config = new Builder() .skipReportHeader(true) .skipColumnHeader(true) .reportDownloadTimeout(-1) .build(); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("timeout"); config.validate(null); } }
ReportingConfiguration reportingConfiguration = session.getReportingConfiguration(); if (reportingConfiguration != null) { reportingConfiguration.validate(version); if (reportingConfiguration.isSkipReportHeader() != null) { httpHeaders.set("skipReportHeader", Boolean.toString(reportingConfiguration.isSkipReportHeader())); if (reportingConfiguration.isSkipColumnHeader() != null) { httpHeaders.set("skipColumnHeader", Boolean.toString(reportingConfiguration.isSkipColumnHeader())); if (reportingConfiguration.isSkipReportSummary() != null) { httpHeaders.set("skipReportSummary", Boolean.toString(reportingConfiguration.isSkipReportSummary())); if (reportingConfiguration.isIncludeZeroImpressions() != null) { httpHeaders.set( "includeZeroImpressions", Boolean.toString(reportingConfiguration.isIncludeZeroImpressions())); if (reportingConfiguration.isUseRawEnumValues() != null) { httpHeaders.set( "useRawEnumValues", Boolean.toString(reportingConfiguration.isUseRawEnumValues()));
/** * Constructor used by Guice. * * @param session Used to pull authentication data. * @param authorizationHeaderProvider Used to population the authentication data into a header. * @param userAgentCombiner Used to populate the User-Agent header. * @param adWordsLibConfiguration Used to obtain configuration options affecting report requests. * @param responseInterceptor Response interceptor to use for requests generated by this factory * helper. */ @Inject ReportRequestFactoryHelper(AdWordsSession session, AuthorizationHeaderProvider authorizationHeaderProvider, UserAgentCombiner userAgentCombiner, HttpTransport httpTransport, AdWordsLibConfiguration adWordsLibConfiguration, ReportResponseInterceptor responseInterceptor) { this.session = session; this.authorizationHeaderProvider = authorizationHeaderProvider; this.userAgentCombiner = userAgentCombiner; this.httpTransport = httpTransport; this.reportDownloadTimeout = (session.getReportingConfiguration() != null && session.getReportingConfiguration().getReportDownloadTimeout() != null) ? session.getReportingConfiguration().getReportDownloadTimeout() : adWordsLibConfiguration.getReportDownloadTimeout(); this.responseInterceptor = responseInterceptor; }
/** * Returns a new instance of {@link ReportingConfiguration} based on the attributes * of this builder. */ public ReportingConfiguration build() { return new ReportingConfiguration(this); } }
@Test public void testBuilder_noOptions() { ReportingConfiguration reportingConfiguration = new Builder().build(); assertNull(reportingConfiguration.isSkipReportHeader()); assertNull(reportingConfiguration.isSkipColumnHeader()); assertNull(reportingConfiguration.isSkipReportSummary()); assertNull(reportingConfiguration.isIncludeZeroImpressions()); assertNull(reportingConfiguration.isUseRawEnumValues()); }
@Test public void testBuilder_nullOptions() { ReportingConfiguration reportingConfiguration = new Builder() .skipReportHeader(null) .skipReportSummary(null) .includeZeroImpressions(null) .useRawEnumValues(null) .build(); assertNull(reportingConfiguration.isSkipReportHeader()); assertNull(reportingConfiguration.isSkipColumnHeader()); assertNull(reportingConfiguration.isSkipReportSummary()); assertNull(reportingConfiguration.isIncludeZeroImpressions()); assertNull(reportingConfiguration.isUseRawEnumValues()); }
@Test public void testBuilder_allOptionsTrue() { ReportingConfiguration reportingConfiguration = new Builder() .skipReportHeader(true) .skipColumnHeader(true) .skipReportSummary(true) .includeZeroImpressions(true) .useRawEnumValues(true) .build(); assertTrue(reportingConfiguration.isSkipReportHeader()); assertTrue(reportingConfiguration.isSkipColumnHeader()); assertTrue(reportingConfiguration.isSkipReportSummary()); assertTrue(reportingConfiguration.isIncludeZeroImpressions()); assertTrue(reportingConfiguration.isUseRawEnumValues()); }
@Test public void testBuilder_mixedOptions_trueFalse() { ReportingConfiguration reportingConfiguration = new Builder() .skipReportHeader(true) .skipColumnHeader(true) .skipReportSummary(false) .includeZeroImpressions(false) .useRawEnumValues(true) .build(); assertTrue(reportingConfiguration.isSkipReportHeader()); assertTrue(reportingConfiguration.isSkipColumnHeader()); assertFalse(reportingConfiguration.isSkipReportSummary()); assertFalse(reportingConfiguration.isIncludeZeroImpressions()); assertTrue(reportingConfiguration.isUseRawEnumValues()); }
assertTrue(config1.isSkipReportHeader()); assertFalse(config1.isSkipColumnHeader()); assertTrue(config1.isSkipReportSummary()); assertFalse(config1.isIncludeZeroImpressions()); assertTrue(config1.isUseRawEnumValues()); config1.isSkipReportHeader()); config2.isSkipReportHeader());
reportingConfig.isIncludeZeroImpressions()); assertNull( "skip column header is not null, but no reporting options in config", reportingConfig.isSkipColumnHeader()); assertNull( "skip report header is not null, but no reporting options in config", reportingConfig.isSkipReportHeader()); assertNull( "skip report summary is not null, but no reporting options in config", reportingConfig.isSkipReportSummary()); assertNull( "use raw enum values is not null, but no reporting options in config", reportingConfig.isUseRawEnumValues()); assertNull( "download timeout is not null, but no reporting options in config", reportingConfig.getReportDownloadTimeout());
"reporting configuration should not be null", session.getReportingConfiguration()); assertTrue(session.getReportingConfiguration().isSkipReportHeader()); assertTrue(session.getReportingConfiguration().isSkipColumnHeader()); assertFalse(session.getReportingConfiguration().isSkipReportSummary()); assertFalse(session.getReportingConfiguration().isUseRawEnumValues()); assertEquals( 9999999, session.getReportingConfiguration().getReportDownloadTimeout().intValue()); assertNull( "includeZeroImpressions is not settable from ads.properties, so should be null", session.getReportingConfiguration().isIncludeZeroImpressions());
assertEquals("read timeout is incorrect", timeoutFromLibConfig, request.getReadTimeout()); } else { Integer expectedTimeout = reportingConfiguration.getReportDownloadTimeout(); if (expectedTimeout == null) { assertEquals( "skipReportHeader not equal to the reporting config setting", toStringBoolean(reportingConfiguration.isSkipReportHeader()), headers.get("skipReportHeader")); assertEquals( "skipColumnHeader not equal to the reporting config setting", toStringBoolean(reportingConfiguration.isSkipColumnHeader()), headers.get("skipColumnHeader")); assertEquals( "skipReportSummary not equal to the reporting config setting", toStringBoolean(reportingConfiguration.isSkipReportSummary()), headers.get("skipReportSummary")); assertEquals( "includeZeroImpressions not equal to the reporting config setting", toStringBoolean(reportingConfiguration.isIncludeZeroImpressions()), headers.get("includeZeroImpressions")); assertEquals( "useRawEnumValues not equal to the reporting config setting", toStringBoolean(reportingConfiguration.isUseRawEnumValues()), headers.get("useRawEnumValues"));