/**
  * Get license for encrypted content playback
  * 
  * @action getLicense
  * @param string $flavorAssetId
  * @param string $referrer 64base encoded  
  * @return string $response
  * 
  */
 public function getLicenseAction($flavorAssetId, $referrer = null)
 {
     KalturaResponseCacher::disableCache();
     KalturaLog::debug('get license for flavor asset: ' . $flavorAssetId);
     try {
         $requestParams = requestUtils::getRequestParams();
         if (!array_key_exists(WidevineLicenseProxyUtils::ASSETID, $requestParams)) {
             KalturaLog::err('assetid is missing on the request');
             return WidevineLicenseProxyUtils::createErrorResponse(KalturaWidevineErrorCodes::WIDEVINE_ASSET_ID_CANNOT_BE_NULL, 0);
         }
         $wvAssetId = $requestParams[WidevineLicenseProxyUtils::ASSETID];
         $this->validateLicenseRequest($flavorAssetId, $wvAssetId, $referrer);
         $privileges = null;
         $isAdmin = false;
         if (kCurrentContext::$ks_object) {
             $privileges = kCurrentContext::$ks_object->getPrivileges();
             $isAdmin = kCurrentContext::$ks_object->isAdmin();
         }
         $response = WidevineLicenseProxyUtils::sendLicenseRequest($requestParams, $privileges, $isAdmin);
     } catch (KalturaWidevineLicenseProxyException $e) {
         KalturaLog::err($e);
         $response = WidevineLicenseProxyUtils::createErrorResponse($e->getWvErrorCode(), $wvAssetId);
     } catch (Exception $e) {
         KalturaLog::err($e);
         $response = WidevineLicenseProxyUtils::createErrorResponse(KalturaWidevineErrorCodes::GENERAL_ERROR, $wvAssetId);
     }
     WidevineLicenseProxyUtils::printLicenseResponseStatus($response);
     return $response;
 }
 public function serialize($object)
 {
     if (is_object($object) && $object instanceof Exception) {
         $assetid = 0;
         $requestParams = requestUtils::getRequestParams();
         if (array_key_exists(WidevineLicenseProxyUtils::ASSETID, $requestParams)) {
             $assetid = $requestParams[WidevineLicenseProxyUtils::ASSETID];
         }
         $object = WidevineLicenseProxyUtils::createErrorResponse(KalturaWidevineErrorCodes::GENERAL_ERROR, $assetid);
     }
     return $object;
 }
 /**
  * Send register asset request to Widevine license server
  * If asset name is not passed call getAsset first to get asset by id
  * 
  * https://register.uat.widevine.com/registerasset/kaltura?asset=test1155&owner=kaltura&provider=name:kaltura,policy:default&replace=1
  * https://register.uat.widevine.com/getasset/kaltura?asset=test537&owner=kaltura&provider=kaltura
  */
 public static function sendRegisterAssetRequest($wvRegServerHost, $assetName = null, $assetId = null, $portal = null, $policy = null, $licenseStartDate = null, $licenseEndDate = null, $iv, $key, &$errorMessage)
 {
     $params = array();
     if (!$portal) {
         $portal = WidevinePlugin::KALTURA_PROVIDER;
     }
     if ($licenseStartDate) {
         $licenseStartDate = self::convertLicenseStartDate($licenseStartDate);
     }
     if ($licenseEndDate) {
         $licenseEndDate = self::convertLicenseEndDate($licenseEndDate);
     }
     //get asset by Id and set assetName
     if ($assetId && !$assetName) {
         $params[self::ASSET_ID] = $assetId;
         $params[self::OWNER] = $portal;
         $params[self::PROVIDER] = $portal;
         $ptime = time();
         $signInput = $params[self::OWNER] . $params[self::PROVIDER] . $ptime;
         $sign = WidevineLicenseProxyUtils::createRequestSignature($signInput, $key, $iv);
         $params[self::PTIME] = $ptime;
         $params[self::SIGN] = $sign;
         $response = self::sendHttpRequest($wvRegServerHost . WidevinePlugin::GET_ASSET_URL_PART . $portal, $params);
         if ($response[self::STATUS] == 1) {
             $assetName = $response[self::ASSET_NAME];
             unset($params[self::PROVIDER]);
             $policy = $response[self::POLICY];
             if (!$licenseStartDate) {
                 $licenseStartDate = $response[self::LSTART];
             }
             if (!$licenseEndDate) {
                 $licenseEndDate = $response[self::LEND];
             }
         } else {
             $errorMessage = "Error in GetAsset API - " . self::$wvPackagerErrorCodes[$response[self::STATUS]];
             return false;
         }
     }
     $params[self::ASSET_NAME] = $assetName;
     $params[self::OWNER] = $portal;
     $params[self::REPLACE] = 1;
     $providerParams = array();
     $providerParams[self::PROVIDER_NAME] = $portal;
     if (!$policy) {
         $policy = WidevinePlugin::DEFAULT_POLICY;
     }
     $providerParams[self::POLICY] = $policy;
     if ($licenseStartDate) {
         $providerParams[self::LICSTART] = $licenseStartDate;
     }
     if ($licenseEndDate) {
         $providerParams[self::LICEND] = $licenseEndDate;
     }
     //sign register asset request
     $ptime = time();
     $signInput = $params[self::ASSET_NAME] . $params[self::OWNER] . $providerParams[self::PROVIDER_NAME] . $ptime;
     $sign = WidevineLicenseProxyUtils::createRequestSignature($signInput, $key, $iv);
     $params[self::PTIME] = $ptime;
     $params[self::SIGN] = $sign;
     $response = self::sendHttpRequest($wvRegServerHost . WidevinePlugin::REGISTER_ASSET_URL_PART . $portal, $params, $providerParams);
     if ($response[self::STATUS] == 1) {
         return $response[self::ASSET_ID_ADD];
     } else {
         $errorMessage = "Error in RegisterAsset API -  " . self::$wvPackagerErrorCodes[$response[self::STATUS]];
         return false;
     }
 }