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); }
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); }