/** * Overrides the method SoapClient.__soapCall() to process the * response from the SOAP call. * @param string $function_name the name of the function being called * @param array $arguments the arguments to that function * @param array $options the options for the SOAP call * @param array $input_headers the optional input headers * @param array $output_headers the options output headers * @return mixed the return from the parent __soapCall * @throws SOAPFault if there was an exception making the request */ function __soapCall($function_name, $arguments, $options = NULL, $input_headers = NULL, &$output_headers = NULL) { DeprecationUtils::CheckAdsUserUsingOAuth2($this->user); try { $input_headers[] = $this->GenerateSoapHeader(); $this->lastHeaders = $input_headers; $this->lastArguments = $arguments; $response = parent::__soapCall($function_name, $arguments, $options, $input_headers, $output_headers); $this->ProcessResponse($this->lastRequest, $this->__getLastResponse(), $function_name); return $response; } catch (\SoapFault $e) { $this->ProcessResponse($this->lastRequest, $this->__getLastResponse(), $function_name, $e); throw $e; } }
/** * 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['skipReportHeader'])) { $headers['skipReportHeader'] = $options['skipReportHeader'] ? 'true' : 'false'; } if (isset($options['skipColumnHeader'])) { DeprecationUtils::CheckUsingReportHeadersWithUnsupportedVersion('skipColumnHeader', self::MINIMUM_SKIP_COLUMN_HEADER_VERSION, $version); $headers['skipColumnHeader'] = $options['skipColumnHeader'] ? 'true' : 'false'; } if (isset($options['skipReportSummary'])) { $headers['skipReportSummary'] = $options['skipReportSummary'] ? 'true' : 'false'; } if (isset($options['includeZeroImpressions'])) { DeprecationUtils::CheckUsingReportHeadersWithUnsupportedVersion('includeZeroImpressions', self::MINIMUM_INCLUDE_ZERO_IMPRESSIONS_HEADER_VERSION, $version); $headers['includeZeroImpressions'] = $options['includeZeroImpressions'] ? 'true' : 'false'; } return $headers; }