/**
  * 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;
 }
Example #2
0
 /**
  * Call all API service that are in queue
  *
  * @return object
  */
 public function doQueue()
 {
     if (count($this->callsQueue) == 0) {
         $this->resetRequest();
         return null;
     }
     $startTime = microtime(true);
     $params = array();
     $files = array();
     $this->log("service url: [" . $this->config->getServiceUrl() . "]");
     // append the basic params
     $this->addParam($params, "format", $this->config->getFormat());
     $this->addParam($params, "ignoreNull", true);
     foreach ($this->clientConfiguration as $param => $value) {
         $this->addParam($params, $param, $value);
     }
     $url = $this->config->getServiceUrl() . "/api_v3/index.php?service=";
     if (!is_null($this->multiRequestReturnType)) {
         $url .= "multirequest";
         $i = 0;
         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}";
         $this->resetRequest();
         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) {
             $this->resetRequest();
             throw new ClientException("unsupported format: {$postResult}", ClientException::ERROR_FORMAT_NOT_SUPPORTED);
         }
     }
     $this->resetRequest();
     $endTime = microtime(true);
     $this->log("execution time for [" . $url . "]: [" . ($endTime - $startTime) . "]");
     return $postResult;
 }