File tree

399 files changed

+9820
-25763
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searcx below for content that may be hidden.

399 files changed

+9820
-25763
lines changed
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
This file was deleted.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,15 @@ final class AdManagerHeaderHandler implements AdsHeaderHandler
6969
*/
7070
public function generateHttpHeaders(AdsSession $session)
7171
{
72+
// MOE:begin_strip
73+
// TODO: b/158447308 Use a new logger or context object for oauth errors
74+
// * Extract variables for `getOrFetchAccessToken()` and
75+
// `getOAuth2Credential()` calls.
76+
// * Make sure the new logger or context object log or contain
77+
// information about where the credential is loaded and which
78+
// tokens are used. Refresh tokens need to be redacted to
79+
// a 12-character length.
80+
// MOE:end_strip
7281
$httpHandler = new AdsGuzzleProxyHttpHandler($session);
7382
$httpHeaders = [
7483
'Authorization' => sprintf(
@@ -81,6 +90,16 @@ final class AdManagerHeaderHandler implements AdsHeaderHandler
8190
)
8291
)
8392
];
93+
// MOE:begin_strip
94+
if ($session->isIcsUser()) {
95+
$httpHeaders['Is-Internal-User'] = 'true';
96+
$impersonatedUser = $session->getImpersonatedUser();
97+
if ($impersonatedUser !== null) {
98+
$httpHeaders['Impersonate-User'] = $impersonatedUser;
99+
}
100+
}
101+
102+
// MOE:end_strip
84103
return $httpHeaders;
85104
}
86105

Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ final class AdManagerSession implements AdsSession
3333
private $oAuth2Credential;
3434
private $connectionSettings;
3535
private $soapSettings;
36+
// MOE:begin_strip
37+
private $isIcsUser;
38+
private $impersonatedUser;
39+
// MOE:end_strip
3640
private $soapLogger;
3741
private $reportDownloaderLogger;
3842
private $adsHeaderFormatter;
@@ -55,6 +59,10 @@ final class AdManagerSession implements AdsSession
5559
$this->connectionSettings = $builder->getConnectionSettings();
5660
$this->soapSettings = $builder->getSoapSettings();
5761
$this->adsHeaderFormatter = $builder->getAdsHeaderFormatter();
62+
// MOE:begin_strip
63+
$this->isIcsUser = $builder->isIcsUser();
64+
$this->impersonatedUser = $builder->getImpersonatedUser();
65+
// MOE:end_strip
5866
$this->soapLogger = $builder->getSoapLogger();
5967
$this->reportDownloaderLogger = $builder->getReportDownloaderLogger();
6068
}
@@ -110,6 +118,29 @@ final class AdManagerSession implements AdsSession
110118
{
111119
return $this->soapSettings;
112120
}
121+
// MOE:begin_strip
122+
/**
123+
* Whether this session represents a user with ICS access.
124+
*
125+
* @return boolean|null
126+
*/
127+
public function isIcsUser()
128+
{
129+
return $this->isIcsUser;
130+
}
131+
132+
/**
133+
* Gets the email address of a Ad Manager user to impersonate.
134+
* This is `null` if API requests should be performed by the authenticated
135+
* user within the impersonated network.
136+
*
137+
* @return string|null
138+
*/
139+
public function getImpersonatedUser()
140+
{
141+
return $this->impersonatedUser;
142+
}
143+
// MOE:end_strip
113144

114145
/**
115146
* @see AdsSession::getSoapLogger()
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ final class AdManagerSessionBuilder implements AdsBuilder
6565
private $oAuth2Credential;
6666
private $connectionSettings;
6767
private $soapSettings;
68+
// MOE:begin_strip
69+
private $isIcsUser;
70+
private $impersonatedUser;
71+
// MOE:end_strip
6872

6973
private $soapLogger;
7074
private $reportDownloaderLogger;
@@ -230,6 +234,34 @@ final class AdManagerSessionBuilder implements AdsBuilder
230234

231235
return $this;
232236
}
237+
// MOE:begin_strip
238+
/**
239+
* Allows the session to act as an ICS user for the specified network.
240+
*
241+
* @param string $networkCode
242+
* @return AdManagerSessionBuilder this builder
243+
*/
244+
public function asIcsUserForNetwork(string $networkCode)
245+
{
246+
$this->isIcsUser = true;
247+
248+
return $this->withNetworkCode($networkCode);
249+
}
250+
251+
/**
252+
* Impersonates the specified user.
253+
*
254+
* @param string $impersonatedUser the email address of the user to
255+
* impersonate
256+
* @return AdManagerSessionBuilder this builder
257+
*/
258+
public function asImpersonatedUser(string $impersonatedUser)
259+
{
260+
$this->impersonatedUser = $impersonatedUser;
261+
262+
return $this;
263+
}
264+
// MOE:end_strip
233265

234266
/**
235267
* Includes a PSR-3 compliant logger for logging SOAP calls. This is
@@ -290,6 +322,9 @@ final class AdManagerSessionBuilder implements AdsBuilder
290322
*/
291323
public function defaultOptionals()
292324
{
325+
// MOE:begin_strip
326+
// TODO: b/158447308 Create a new logger or context object for debugging
327+
// MOE:end_strip
293328
if ($this->endpoint === null) {
294329
$this->endpoint = self::DEFAULT_ENDPOINT;
295330
}
@@ -362,6 +397,16 @@ final class AdManagerSessionBuilder implements AdsBuilder
362397
'Missing OAuth2 authentication credentials.'
363398
);
364399
}
400+
// MOE:begin_strip
401+
if (!$this->isIcsUser
402+
&& ($this->impersonatedUser !== null
403+
&& trim($this->impersonatedUser) !== '')) {
404+
throw new InvalidArgumentException(
405+
'To impersonate a user, you must authenticate as an internal '
406+
. 'user with the asIcsUserForNetwork() method.'
407+
);
408+
}
409+
// MOE:end_strip
365410
}
366411

367412
/**
@@ -423,6 +468,28 @@ final class AdManagerSessionBuilder implements AdsBuilder
423468
{
424469
return $this->soapSettings;
425470
}
471+
// MOE:begin_strip
472+
473+
/**
474+
* If ICS access is being used.
475+
*
476+
* @return boolean|null
477+
*/
478+
public function isIcsUser()
479+
{
480+
return $this->isIcsUser;
481+
}
482+
483+
/**
484+
* Gets the email address of the impersonated user.
485+
*
486+
* @return string|null
487+
*/
488+
public function getImpersonatedUser()
489+
{
490+
return $this->impersonatedUser;
491+
}
492+
// MOE:end_strip
426493

427494
/**
428495
* Gets the SOAP logger.
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
* limitations under the License.
1616
*/
1717

18-
namespace Google\AdsApi\AdManager\Util\v202005;
18+
namespace Google\AdsApi\AdManager\Util\v202105;
1919

2020
use DateTime;
2121
use DateTimeZone;
22-
use Google\AdsApi\AdManager\v202005\Date;
23-
use Google\AdsApi\AdManager\v202005\DateTime as AdManagerDateTime;
22+
use Google\AdsApi\AdManager\v202105\Date;
23+
use Google\AdsApi\AdManager\v202105\DateTime as AdManagerDateTime;
2424

2525
/**
2626
* Static utility methods for working with Ad Manager `DateTime` objects.
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
* limitations under the License.
1616
*/
1717

18-
namespace Google\AdsApi\AdManager\Util\v202005;
18+
namespace Google\AdsApi\AdManager\Util\v202105;
1919

20-
use Google\AdsApi\AdManager\v202005\Date;
20+
use Google\AdsApi\AdManager\v202105\Date;
2121

2222
/**
2323
* Static utility methods for working with Ad Manager `Date` objects.
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
namespace Google\AdsApi\AdManager\Util\v202005;
18+
namespace Google\AdsApi\AdManager\Util\v202105;
1919

2020
use InvalidArgumentException;
2121

Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@
1515
* limitations under the License.
1616
*/
1717

18-
namespace Google\AdsApi\AdManager\Util\v202005;
19-
20-
use Google\AdsApi\AdManager\v202005\BooleanValue;
21-
use Google\AdsApi\AdManager\v202005\Date;
22-
use Google\AdsApi\AdManager\v202005\DateTime as AdManagerDateTime;
23-
use Google\AdsApi\AdManager\v202005\DateTimeValue;
24-
use Google\AdsApi\AdManager\v202005\DateValue;
25-
use Google\AdsApi\AdManager\v202005\NumberValue;
26-
use Google\AdsApi\AdManager\v202005\ResultSet;
27-
use Google\AdsApi\AdManager\v202005\Row;
28-
use Google\AdsApi\AdManager\v202005\SetValue;
29-
use Google\AdsApi\AdManager\v202005\Targeting;
30-
use Google\AdsApi\AdManager\v202005\TargetingValue;
31-
use Google\AdsApi\AdManager\v202005\TextValue;
32-
use Google\AdsApi\AdManager\v202005\Value;
18+
namespace Google\AdsApi\AdManager\Util\v202105;
19+
20+
use Google\AdsApi\AdManager\v202105\BooleanValue;
21+
use Google\AdsApi\AdManager\v202105\Date;
22+
use Google\AdsApi\AdManager\v202105\DateTime as AdManagerDateTime;
23+
use Google\AdsApi\AdManager\v202105\DateTimeValue;
24+
use Google\AdsApi\AdManager\v202105\DateValue;
25+
use Google\AdsApi\AdManager\v202105\NumberValue;
26+
use Google\AdsApi\AdManager\v202105\ResultSet;
27+
use Google\AdsApi\AdManager\v202105\Row;
28+
use Google\AdsApi\AdManager\v202105\SetValue;
29+
use Google\AdsApi\AdManager\v202105\Targeting;
30+
use Google\AdsApi\AdManager\v202105\TargetingValue;
31+
use Google\AdsApi\AdManager\v202105\TextValue;
32+
use Google\AdsApi\AdManager\v202105\Value;
3333
use InvalidArgumentException;
3434

3535
/**
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
* limitations under the License.
1616
*/
1717

18-
namespace Google\AdsApi\AdManager\Util\v202005;
18+
namespace Google\AdsApi\AdManager\Util\v202105;
1919

2020
use Google\AdsApi\Common\AdsGuzzleHttpClientFactory;
2121
use Google\AdsApi\Common\GuzzleHttpClientFactory;
2222
use Google\AdsApi\AdManager\AdManagerGuzzleLogMessageFormatterProvider;
2323
use Google\AdsApi\AdManager\AdManagerHeaderHandler;
24-
use Google\AdsApi\AdManager\v202005\ReportJobStatus;
25-
use Google\AdsApi\AdManager\v202005\ReportService;
24+
use Google\AdsApi\AdManager\v202105\ReportJobStatus;
25+
use Google\AdsApi\AdManager\v202105\ReportService;
2626
use GuzzleHttp\Client;
2727
use GuzzleHttp\RequestOptions;
2828
use Psr\Http\Message\StreamInterface;
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
* limitations under the License.
1616
*/
1717

18-
namespace Google\AdsApi\AdManager\Util\v202005;
18+
namespace Google\AdsApi\AdManager\Util\v202105;
1919

2020
use Google\AdsApi\Common\Util\MapEntries;
21-
use Google\AdsApi\AdManager\v202005\Statement;
21+
use Google\AdsApi\AdManager\v202105\Statement;
2222
use InvalidArgumentException;
2323

2424
/**
@@ -102,7 +102,7 @@ class StatementBuilder
102102
$statement->setValues(
103103
MapEntries::fromAssociativeArray(
104104
$this->getBindVariableMap(),
105-
'Google\AdsApi\AdManager\v202005\String_ValueMapEntry'
105+
'Google\AdsApi\AdManager\v202105\String_ValueMapEntry'
106106
)
107107
);
108108

0 commit comments

Comments
 (0)