/** * Makes the request to API and returns the result. * * @param PlayerLyncRequest $request * * @return PlayerLyncResponse * * @throws PlayerLyncSDKException */ public function sendRequest(PlayerLyncRequest $request) { if (get_class($request) === 'PlayerLyncRequest') { $request->validateAccessToken(); } list($url, $method, $headers, $body) = $this->prepareRequestMessage($request); // Since file uploads can take a while, we need to give more time for uploads $timeOut = static::DEFAULT_REQUEST_TIMEOUT; if ($request->containsFileUploads()) { $timeOut = static::DEFAULT_FILE_UPLOAD_REQUEST_TIMEOUT; } elseif ($request->containsVideoUploads()) { $timeOut = static::DEFAULT_VIDEO_UPLOAD_REQUEST_TIMEOUT; } // Should throw `PlayerLyncSDKException` exception on HTTP client error. // Don't catch to allow it to bubble up. $rawResponse = $this->httpClientHandler->send($url, $method, $body, $headers, $timeOut); static::$requestCount++; $returnResponse = new PlayerLyncResponse($request, $rawResponse->getBody(), $rawResponse->getHttpResponseCode(), $rawResponse->getHeaders()); if ($returnResponse->isError()) { throw $returnResponse->getThrownException(); } return $returnResponse; }