/** * @param Payload $payload * @return CurlResponse * @throws ConnectionException */ public function sendPayload(Payload $payload) { $ch = curl_init($payload->getUrl()); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->curlOptConnectionTimeOut); curl_setopt($ch, CURLOPT_TIMEOUT, $this->curlOptTimeOut); if (in_array($payload->getMethod(), ['post', 'put'])) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload->getPostData())); } $headers = $payload->getHeaders(); if (false === empty($headers)) { $curlHeaders = array(); foreach ($headers as $key => $value) { $curlHeaders[] = $key . ': ' . $value; } curl_setopt($ch, CURLOPT_HTTPHEADER, $curlHeaders); } $content = curl_exec($ch); if ($content === false) { throw new ConnectionException(); } $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $retHeaders = substr($content, 0, $header_size); $body = substr($content, $header_size); return new CurlResponse(curl_getinfo($ch, CURLINFO_HTTP_CODE), $retHeaders, $body); }
/** * @param Payload $payload * @return ResponseInterface */ public function sendPayload(Payload $payload) { switch ($payload->getUrl()) { case 'http://my.videopublisher.io/api/published': return $this->generateListStreamsResponse(); case 'http://my.videopublisher.io/api/publish/00000000-0000-0000-0000-00000000': return $this->generateGetStreamResponse(); case 'http://my.videopublisher.io/exception/api/published': return new CurlResponse(400, null, null); case 'http://my.videopublisher.io/exception/api/publish/00000000-0000-0000-0000-00000000': return new CurlResponse(400, null, null); } }