/** * Call all API service that are in queue * * @return object */ public function doQueue() { if (count($this->callsQueue) == 0) { $this->isMultiRequest = false; return null; } $startTime = microtime(true); $params = array(); $files = array(); $this->log("service url: [" . $this->config->getServiceUrl() . "]"); // append the basic params $this->addParam($params, "apiVersion", $this->apiVersion); $this->addParam($params, "format", $this->config->getFormat()); $this->addParam($params, "clientTag", $this->config->getClientTag()); $this->addParam($params, "ignoreNull", true); $url = $this->config->getServiceUrl() . "/api_v3/index.php?service="; if ($this->isMultiRequest) { $url .= "multirequest"; $i = 1; foreach ($this->callsQueue as $call) { $callParams = $call->getParamsForMultiRequest($i); $callFiles = $call->getFilesForMultiRequest($i); $params = array_merge($params, $callParams); $files = array_merge($files, $callFiles); $i++; } } else { $call = $this->callsQueue[0]; $url .= $call->service . "&action=" . $call->action; $params = array_merge($params, $call->params); $files = $call->files; } // reset $this->callsQueue = array(); $this->isMultiRequest = false; $signature = $this->signature($params); $this->addParam($params, "kalsig", $signature); list($postResult, $error) = $this->doHttpRequest($url, $params, $files); if ($error) { throw new ClientException($error, ClientException::ERROR_GENERIC); } else { $this->log("result (serialized): " . $postResult); if ($this->config->getFormat() == self::KALTURA_SERVICE_FORMAT_XML) { $result = $this->unmarshal($postResult); if (is_null($result)) { throw new ClientException("failed to unserialize server result\n{$postResult}", ClientException::ERROR_UNSERIALIZE_FAILED); } } else { throw new ClientException("unsupported format: {$postResult}", ClientException::ERROR_FORMAT_NOT_SUPPORTED); } } $endTime = microtime(true); $this->log("execution time for [" . $url . "]: [" . ($endTime - $startTime) . "]"); return $result; }
/** * Call all API service that are in queue * * @return object */ public function doQueue() { if (count($this->callsQueue) == 0) { $this->multiRequestReturnType = null; return null; } $startTime = microtime(true); $params = array(); $files = array(); $this->log("service url: [" . $this->config->getServiceUrl() . "]"); // append the basic params $this->addParam($params, "apiVersion", $this->apiVersion); $this->addParam($params, "format", $this->config->getFormat()); $this->addParam($params, "clientTag", $this->config->getClientTag()); $this->addParam($params, "ignoreNull", true); $url = $this->config->getServiceUrl() . "/api_v3/index.php?service="; if (!is_null($this->multiRequestReturnType)) { $url .= "multirequest"; $i = 1; foreach ($this->callsQueue as $call) { $callParams = $call->getParamsForMultiRequest($i); $callFiles = $call->getFilesForMultiRequest($i); $params = array_merge($params, $callParams); $files = array_merge($files, $callFiles); $i++; } } else { $call = $this->callsQueue[0]; $url .= $call->service . "&action=" . $call->action; $params = array_merge($params, $call->params); $files = $call->files; } // reset $this->callsQueue = array(); $signature = $this->signature($params); $this->addParam($params, "kalsig", $signature); list($postResult, $errorCode, $error) = $this->doHttpRequest($url, $params, $files); if ($error || $errorCode != 200) { $error .= ". RC : {$errorCode}"; throw new ClientException($error, ClientException::ERROR_GENERIC); } else { // print server debug info to log $serverName = null; $serverSession = null; foreach ($this->responseHeaders as $curHeader) { $splittedHeader = explode(':', $curHeader, 2); if ($splittedHeader[0] == 'X-Me') { $serverName = trim($splittedHeader[1]); } else { if ($splittedHeader[0] == 'X-Kaltura-Session') { $serverSession = trim($splittedHeader[1]); } } } if (!is_null($serverName) || !is_null($serverSession)) { $this->log("server: [{$serverName}], session: [{$serverSession}]"); } $this->log("result (serialized): " . $postResult); if ($this->config->getFormat() != self::KALTURA_SERVICE_FORMAT_XML) { throw new ClientException("unsupported format: {$postResult}", ClientException::ERROR_FORMAT_NOT_SUPPORTED); } } $endTime = microtime(true); $this->log("execution time for [" . $url . "]: [" . ($endTime - $startTime) . "]"); return $postResult; }