Example #1
0
 /**
  * {@inheritdoc}
  *
  * @param resource|StreamInterface|string $inputStream The input stream (encoded with tar) containing the Dockerfile
  *                                                     and other files for the image.
  *
  * @return \Psr\Http\Message\ResponseInterface|BuildInfo[]|BuildStream
  */
 public function build($inputStream, $parameters = [], $fetch = self::FETCH_OBJECT)
 {
     if (is_resource($inputStream)) {
         $inputStream = new TarStream($inputStream);
     }
     $queryParam = new QueryParam();
     $queryParam->setDefault('dockerfile', null);
     $queryParam->setDefault('t', null);
     $queryParam->setDefault('remote', null);
     $queryParam->setDefault('q', false);
     $queryParam->setDefault('nocache', false);
     $queryParam->setDefault('pull', null);
     $queryParam->setDefault('rm', true);
     $queryParam->setDefault('forcerm', false);
     $queryParam->setDefault('memory', null);
     $queryParam->setDefault('memswap', null);
     $queryParam->setDefault('cpushares', null);
     $queryParam->setDefault('cpusetcpus', null);
     $queryParam->setDefault('cpuperiod', null);
     $queryParam->setDefault('cpuquota', null);
     $queryParam->setDefault('buildargs', null);
     $queryParam->setDefault('Content-type', 'application/tar');
     $queryParam->setHeaderParameters(['Content-type']);
     $queryParam->setDefault('X-Registry-Config', null);
     $queryParam->setHeaderParameters(['X-Registry-Config']);
     $url = '/build';
     $url = $url . ('?' . $queryParam->buildQueryString($parameters));
     $headers = array_merge(['Host' => 'localhost'], $queryParam->buildHeaders($parameters));
     $body = $inputStream;
     $request = $this->messageFactory->createRequest('POST', $url, $headers, $body);
     if ($inputStream instanceof StreamInterface) {
         $request = $request->withHeader('Transfer-Encoding', 'chunked');
     }
     $response = $this->httpClient->sendRequest($request);
     if (200 === $response->getStatusCode()) {
         if (self::FETCH_STREAM === $fetch) {
             return new BuildStream($response->getBody(), $this->serializer);
         }
         if (self::FETCH_OBJECT === $fetch) {
             $buildInfoList = [];
             $stream = new BuildStream($response->getBody(), $this->serializer);
             $stream->onFrame(function (BuildInfo $buildInfo) use(&$buildInfoList) {
                 $buildInfoList[] = $buildInfo;
             });
             $stream->wait();
             return $buildInfoList;
         }
     }
     return $response;
 }
Example #2
0
 /**
  * {@inheritdoc}
  *
  * @return \Psr\Http\Message\ResponseInterface|BuildInfo[]|BuildStream
  */
 public function build($inputStream, $parameters = [], $fetch = self::FETCH_OBJECT)
 {
     $response = parent::build($inputStream, $parameters, self::FETCH_RESPONSE);
     if (200 === $response->getStatusCode()) {
         if (self::FETCH_STREAM === $fetch) {
             return new BuildStream($response->getBody(), $this->serializer);
         }
         if (self::FETCH_OBJECT === $fetch) {
             $buildInfoList = [];
             $stream = new BuildStream($response->getBody(), $this->serializer);
             $stream->onFrame(function (BuildInfo $buildInfo) use(&$buildInfoList) {
                 $buildInfoList[] = $buildInfo;
             });
             $stream->wait();
             return $buildInfoList;
         }
     }
     return $response;
 }