/** * 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); }
/** * {@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()); }
/** * {@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()); }
/** * 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); }
/** * {@inheritdoc } */ public function patch($url, array $body) { return $this->httpClient->patch($url, ['body' => $body]); }