public function execute()
    {
        $body = '';
        $classes = array();
        $batchHttpTemplate = <<<EOF
--%s
Content-Type: application/http
Content-Transfer-Encoding: binary
MIME-Version: 1.0
Content-ID: %s

%s%s
%s


EOF;
        /** @var Google_Http_Request $req */
        foreach ($this->requests as $key => $request) {
            $firstLine = sprintf('%s %s HTTP/%s', $request->getMethod(), $request->getResource(), $request->getProtocolVersion());
            $content = (string) $request->getBody();
            $body .= sprintf($batchHttpTemplate, $this->boundary, $key, $firstLine, Request::getHeadersAsString($request), $content ? "\n" . $content : '');
            $classes['response-' . $key] = $request->getHeader('X-Php-Expected-Class');
        }
        $body .= "--{$this->boundary}--";
        $body = trim($body);
        $url = Google_Client::API_BASE_PATH . '/' . self::BATCH_PATH;
        $headers = array('Content-Type' => sprintf('multipart/mixed; boundary=%s', $this->boundary), 'Content-Length' => strlen($body));
        $request = $this->client->getHttpClient()->createRequest('POST', $url, ['headers' => $headers, 'body' => Stream::factory($body)]);
        $response = $this->client->getHttpClient()->send($request);
        return $this->parseResponse($response, $classes);
    }
Exemplo n.º 2
0
 public function execute()
 {
     $body = '';
     $classes = array();
     /** @var Google_Http_Request $req */
     foreach ($this->requests as $key => $request) {
         $request->addHeaders(['Content-Type' => 'application/http', 'Content-Transfer-Encoding' => 'binary', 'MIME-Version' => '1.0', 'Content-ID' => $key]);
         $body .= "--{$this->boundary}";
         $body .= Request::getHeadersAsString($request) . "\n\n";
         $body .= sprintf('%s %s HTTP/%s', $request->getMethod(), $request->getResource(), $request->getProtocolVersion());
         $body .= "\n\n";
         $classes['response-' . $key] = $request->getHeader('X-Php-Expected-Class');
     }
     $body .= "--{$this->boundary}--";
     $body = trim($body);
     $url = Google_Client::API_BASE_PATH . '/' . self::BATCH_PATH;
     $headers = array('Content-Type' => sprintf('multipart/mixed; boundary=%s', $this->boundary), 'Content-Length' => strlen($body));
     $request = $this->client->getHttpClient()->createRequest('POST', $url, ['headers' => $headers, 'body' => Stream::factory($body)]);
     $response = $this->client->getHttpClient()->send($request);
     return $this->parseResponse($response, $classes);
 }