Пример #1
0
 /**
  * Execute an operaction
  *
  * A successful operation will return result as an array.
  * An unsuccessful operation will return null.
  *
  * @param  OperationInterface $op
  * @return array|null
  */
 public function execute(OperationInterface $op)
 {
     try {
         if ($op instanceof DeleteOperationInterface) {
             $response = $this->httpClient->delete($op->getEndpoint(), ['headers' => $op->getHeaders()]);
         } elseif ($op instanceof PostOperationInterface) {
             $response = $this->httpClient->post($op->getEndpoint(), ['headers' => $op->getHeaders(), 'body' => $op->getData()]);
         } elseif ($op instanceof PatchOperationInterface) {
             $response = $this->httpClient->patch($op->getEndpoint(), ['headers' => $op->getHeaders(), 'body' => $op->getData()]);
         } elseif ($op instanceof PutOperationInterface) {
             $response = $this->httpClient->put($op->getEndpoint(), ['headers' => $op->getHeaders(), 'body' => $op->getData()]);
         } else {
             $response = $this->httpClient->get($op->getEndpoint());
         }
     } catch (GuzzleHttp\Exception\ClientException $e) {
         throw new Exception\ClientException('ClientException occurred in request to Orchestrate: ' . $e->getMessage(), $e->getCode(), $e);
     } catch (GuzzleHttp\Exception\ServerException $e) {
         throw new Exception\ServerException('ServerException occurred in request to Orchestrate: ' . $e->getMessage(), $e->getCode(), $e);
     }
     $refLink = null;
     $location = null;
     if ($response->hasHeader('ETag')) {
         $refLink = str_replace('"', '', $response->getHeaderLine('ETag'));
     } elseif ($response->hasHeader('Link')) {
         $refLink = str_replace(['<', '>; rel="next"'], ['', ''], $response->getHeaderLine('Link'));
     }
     if ($response->hasHeader('Location')) {
         $location = $response->getHeaderLine('Location');
     }
     $rawValue = $response->getBody(true);
     $value = json_decode($rawValue, true);
     return $op->getObjectFromResponse($refLink, $location, $value, $rawValue);
 }
Пример #2
0
 /**
  * {@inheritDoc}
  */
 public function patch(Request $request)
 {
     $response = null;
     try {
         $response = $this->client->patch($request->getPath(), array_merge(['body' => $request->getBody()], $this->getConfiguration($request)));
     } catch (RequestException $e) {
         $this->handleRequestException($request, $e);
     }
     return $this->createResponse($response);
 }
 /**
  * Completes a task
  *
  * @param int $task_id
  * @param int $revision
  * @return mixed
  */
 public function completeTask($task_id, $revision)
 {
     if (!is_numeric($task_id)) {
         throw new \InvalidArgumentException('The list id must be numeric.');
     } elseif (!is_numeric($revision)) {
         throw new \InvalidArgumentException('The revision must be numeric.');
     }
     $response = $this->client->patch('tasks/' . $task_id, ['body' => json_encode(['revision' => (int) $revision, 'completed' => true])]);
     $this->checkResponseStatusCode($response, 200);
     return json_decode($response->getBody());
 }
Пример #4
0
 /**
  * {@inheritdoc}
  */
 public function patch($url = null, array $headers = [], $content = null)
 {
     try {
         // http://guzzle.readthedocs.org/en/latest/clients.html#request-options
         $options = array('headers' => $headers, 'body' => $content);
         $response = $this->guzzleClient->patch($url, $options);
     } catch (\Exception $e) {
         throw new RequestException($e->getMessage(), $e->getCode(), $e);
     }
     return new Response($response->getStatusCode(), $response->getHeaders(), (string) $response->getBody());
 }
Пример #5
0
 /**
  * Make a PATCH request.
  *
  * @param  string $url
  * @param  array  $options
  * @return object
  */
 public function patch($url, array $options = [])
 {
     $response = $this->client->patch($url, $options);
     return $this->getBody($response);
 }
Пример #6
0
 /**
  * {@inheritdoc }
  */
 public function patch($url, array $body)
 {
     return $this->httpClient->patch($url, ['body' => $body]);
 }