public function testArrayToXml()
    {
        $arr = array('id' => null, 'selector' => array('fields' => array('CampaignId', 'Id', 'Impressions', 'Clicks', 'Cost'), 'predicates' => array(array('field' => 'Status', 'operator' => 'IN', 'values' => array('ENABLED', 'PAUSED')), array('field' => 'Clicks', 'operator' => 'GREATER_THAN', 'values' => '0')), 'dateRange' => array('min' => '20131001', 'max' => '20131029')), 'reportName' => 'Custom Adgroup Performance Report', 'reportType' => 'ADGROUP_PERFORMANCE_REPORT', 'dateRangeType' => 'CUSTOM_DATE', 'downloadFormat' => 'CSV');
        $xml_str = $this->xml_parser->arrayToXml($arr);
        $expected = <<<XML
<?xml version="1.0"?>
<reportDefinition xmlns="https://adwords.google.com/api/adwords/cm/v201406">
  <selector>
    <fields>CampaignId</fields>
    <fields>Id</fields>
    <fields>Impressions</fields>
    <fields>Clicks</fields>
    <fields>Cost</fields>
    <predicates>
      <field>Status</field>
      <operator>IN</operator>
      <values>ENABLED</values>
      <values>PAUSED</values>
    </predicates>
    <predicates>
      <field>Clicks</field>
      <operator>GREATER_THAN</operator>
      <values>0</values>
    </predicates>
    <dateRange>
      <min>20131001</min>
      <max>20131029</max>
    </dateRange>
  </selector>
  <reportName>Custom Adgroup Performance Report</reportName>
  <reportType>ADGROUP_PERFORMANCE_REPORT</reportType>
  <dateRangeType>CUSTOM_DATE</dateRangeType>
  <downloadFormat>CSV</downloadFormat>
</reportDefinition>
XML;
        $expected = str_replace("\n", '', $expected);
        $expected = str_replace("  ", '', $expected);
        $this->assertEquals($expected, $xml_str);
    }
Пример #2
0
 /**
  * @param ReportDefinition $report_definition
  *
  * @return \Guzzle\Http\Message\RequestInterface
  */
 private function buildRequest(ReportDefinition $report_definition)
 {
     $xml = $this->xml_parser->arrayToXml($report_definition->toArray());
     $request = $this->client->post('https://adwords.google.com/api/adwords/reportdownload/' . self::API_VERSION, array('Authorization' => $this->auth_token, 'developerToken' => $this->developer_token, 'clientCustomerId' => $this->customer_id), array('__rdxml' => $xml));
     return $request;
 }