/**
* Gets the HTTP headers for the report download request.
* @param AdWordsUser $user the AdWordsUser to get credentials from
* @param string $url the URL the request will be made to
* @param array $options the options for the download
* @return array and array of strings, which are header names and values
*/
private static function GetHeaders($user, $url, array $options = NULL)
{
$headers = array();
$version = !empty($options['version']) ? $options['version'] : $user->GetDefaultVersion();
// Authorization.
$authHeader = NULL;
$oAuth2Info = $user->GetOAuth2Info();
$oAuth2Handler = $user->GetOAuth2Handler();
if (!empty($oAuth2Info)) {
$oAuth2Info = $oAuth2Handler->GetOrRefreshAccessToken($oAuth2Info);
$user->SetOAuth2Info($oAuth2Info);
$authHeader = $oAuth2Handler->FormatCredentialsForHeader($oAuth2Info);
} else {
throw new ServiceException('OAuth 2.0 authentication is required.');
}
$headers['Authorization'] = $authHeader;
// Developer token.
$headers['developerToken'] = $user->GetDeveloperToken();
// Target client.
$clientCustomerId = $user->GetClientCustomerId();
if (isset($clientCustomerId)) {
$headers['clientCustomerId'] = $clientCustomerId;
} else {
throw new ReportDownloadException('The client customer ID must be ' . 'specified for report downloads.');
}
// Flags.
if (isset($options['returnMoneyInMicros'])) {
DeprecationUtils::CheckUsingReturnMoneyInMicrosWithUnsupportedVersion(self::FINAL_RETURN_MONEY_IN_MICROS_VERSION, $version);
$headers['returnMoneyInMicros'] = $options['returnMoneyInMicros'] ? 'true' : 'false';
}
return $headers;
}