/** * * @param \MailQ\Request $request * @return \MailQ\Response */ public function sendRequest(Request $request) { $ch = curl_init(); $curlHeaders = $this->createCurlHeaders(array_merge($request->getHeaders(), $this->createDefaultHeaders())); $url = $this->baseUrl . '/companies/' . $request->getPath(); if ($request->hasParameters()) { $url .= '?' . http_build_query($request->getParameters()); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HEADERFUNCTION, [$this, 'storeHeader']); curl_setopt($ch, CURLOPT_HTTPHEADER, $curlHeaders); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectionTimeout); curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout); if ($request->hasContent()) { curl_setopt($ch, CURLOPT_POSTFIELDS, $request->getContent()); } if ($request->isPost()) { curl_setopt($ch, CURLOPT_POST, true); } elseif ($request->isDelete()) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, Request::HTTP_METHOD_DELETE); } elseif ($request->isPut()) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, Request::HTTP_METHOD_PUT); } $responseData = curl_exec($ch); $response = $this->createResponse($ch, $responseData); curl_close($ch); return $response; }