/** * @param RequestInterface $request * @return ResponseInterface * @throws InvalidArgumentException */ public function sendRequest(RequestInterface $request) { foreach ($request->getHeaders() as $name => $value) { $this->curlClient->setHeader($name, $value); } switch ($request->getMethod()) { case RequestInterface::METHOD_POST: $this->curlClient->post($request->getUrl(), $request->getBody()); break; default: throw new InvalidArgumentException('Unsupported http request method ' . $request->getMethod(), 0, null, null, null); } if ($this->curlClient->curl_error === true) { throw new HttpClientException($this->curlClient->curl_error_message); } $response = new Response((int) $this->curlClient->http_status_code, $this->curlClient->raw_response); return $response; }
/** * @param RequestInterface $request * @param array $bodyParams * @throws \Exception */ protected function setClientAuthenticationData(RequestInterface $request, array &$bodyParams) { switch ($this->getConfig()->getClientAuthenticationType()) { case AuthenticationType::REQUEST_BODY: $bodyParams['client_id'] = $this->getConfig()->getClientId(); if ($this->config->getClientType() === ClientType::CONFIDENTIAL_TYPE) { $bodyParams['client_secret'] = $this->getConfig()->getClientSecret(); } break; case AuthenticationType::HTTP_BASIC: $request->addHeader('Authorization', $this->getBasicAuth()); break; default: throw new \Exception('Unrecognized client authentication type.'); } }