コード例 #1
0
 /**
  * @covers WindowsAzure\MediaServices\Models\Locator::getStartTime
  * @covers WindowsAzure\MediaServices\Models\Locator::setStartTime
  */
 public function testGetStartTime()
 {
     // Setup
     $assetId = 'uifygid75';
     $accessId = 'ljhsdfl45';
     $type = Locator::TYPE_NONE;
     $locator = new Locator($assetId, $accessId, $type);
     $start = new \Datetime('2013-11-14');
     $locator->setStartTime($start);
     // Test
     $actual = $locator->getStartTime();
     // Assert
     $this->assertEquals($start->getTimestamp(), $actual->getTimestamp());
 }
コード例 #2
0
 public function testUploadLargeFileFromResource()
 {
     // Setup
     $assetName = TestResources::MEDIA_SERVICES_ASSET_NAME . $this->createSuffix();
     $assetOptions = Asset::OPTIONS_NONE;
     $accessPolicyName = TestResources::MEDIA_SERVICES_ACCESS_POLICY_NAME . $this->createSuffix();
     $accessPolicyNameRead = TestResources::MEDIA_SERVICES_ACCESS_POLICY_NAME . $this->createSuffix();
     $accessPolicyDuration = 30;
     $accessPolicyDurationRead = 300;
     $accessPolicyPermission = AccessPolicy::PERMISSIONS_WRITE;
     $accessPolicyPermissionRead = AccessPolicy::PERMISSIONS_READ;
     $locatorStartTime = new \DateTime('now -5 minutes');
     $locatorType = Locator::TYPE_SAS;
     $locatorStartTimeRead = new \DateTime('now -5 minutes');
     $locatorTypeRead = Locator::TYPE_SAS;
     $fileName = TestResources::MEDIA_SERVICES_DUMMY_FILE_NAME;
     $fileContent = $this->createLargeFile();
     $resource = fopen(VirtualFileSystem::newFile($fileContent), 'r');
     // Test
     $asset = new Asset($assetOptions);
     $asset->setName($assetName);
     $asset = $this->createAsset($asset);
     $access = new AccessPolicy($accessPolicyName);
     $access->setDurationInMinutes($accessPolicyDuration);
     $access->setPermissions($accessPolicyPermission);
     $access = $this->createAccessPolicy($access);
     $locator = new Locator($asset, $access, $locatorType);
     $locator->setStartTime($locatorStartTime);
     $locator = $this->createLocator($locator);
     $this->restProxy->uploadAssetFile($locator, $fileName, $resource);
     $this->restProxy->createFileInfos($asset);
     $assetFiles = $this->restProxy->getAssetFileList();
     $accessRead = new AccessPolicy($accessPolicyNameRead);
     $accessRead->setDurationInMinutes($accessPolicyDurationRead);
     $accessRead->setPermissions($accessPolicyPermissionRead);
     $accessRead = $this->createAccessPolicy($accessRead);
     $locatorRead = new Locator($asset, $accessRead, $locatorTypeRead);
     $locatorRead->setStartTime($locatorStartTimeRead);
     $locatorRead = $this->createLocator($locatorRead);
     // without sleep() Locator hasn't enough time to create URL, so that's why we have to use at least sleep(30)
     sleep(40);
     $method = Resources::HTTP_GET;
     $url = new Url($locatorRead->getBaseUri() . '/' . $fileName . $locatorRead->getContentAccessComponent());
     $filters = array();
     $statusCode = Resources::STATUS_OK;
     $httpClient = new HttpClient();
     $httpClient->setMethod($method);
     $httpClient->setExpectedStatusCode($statusCode);
     $downloadedFileContent = $httpClient->send($filters, $url);
     // Assert
     $this->assertEquals($assetName, $asset->getName());
     $this->assertEquals($assetOptions, $asset->getOptions());
     $this->assertNotNull($asset->getId());
     $this->assertNotNull($asset->getCreated());
     $this->assertEquals($accessPolicyName, $access->getName());
     $this->assertEquals($accessPolicyDuration, $access->getDurationInMinutes());
     $this->assertEquals($accessPolicyPermission, $access->getPermissions());
     $this->assertEquals($accessPolicyNameRead, $accessRead->getName());
     $this->assertEquals($accessPolicyDurationRead, $accessRead->getDurationInMinutes());
     $this->assertEquals($accessPolicyPermissionRead, $accessRead->getPermissions());
     $this->assertNotNull($asset->getId());
     $this->assertNotNull($asset->getCreated());
     $this->assertEquals($locatorType, $locator->getType());
     $this->assertEquals($locatorStartTime->getTimestamp(), $locator->getStartTime()->getTimestamp());
     $this->assertEquals($locatorTypeRead, $locatorRead->getType());
     $this->assertEquals($locatorStartTimeRead->getTimestamp(), $locatorRead->getStartTime()->getTimestamp());
     $this->assertEquals($asset->getId(), $locator->getAssetId());
     $this->assertEquals($access->getId(), $locator->getAccessPolicyId());
     $this->assertEquals($asset->getId(), $locatorRead->getAssetId());
     $this->assertEquals($accessRead->getId(), $locatorRead->getAccessPolicyId());
     $this->assertEquals(1, count($assetFiles));
     $this->assertEquals($asset->getId(), $assetFiles[0]->getParentAssetId());
     $this->assertEquals($fileName, $assetFiles[0]->getName());
     $this->assertEquals($fileContent, $downloadedFileContent);
 }
コード例 #3
0
 /**
  * @covers WindowsAzure\MediaServices\MediaServicesRestProxy::createFileInfos
  * @covers WindowsAzure\MediaServices\MediaServicesRestProxy::uploadAssetFile
  * @covers WindowsAzure\MediaServices\MediaServicesRestProxy::send
  * @covers WindowsAzure\MediaServices\MediaServicesRestProxy::wrapAtomEntry
  */
 public function testCreateFileInfos()
 {
     // Setup
     $asset = new Asset(Asset::OPTIONS_NONE);
     $asset->setName(TestResources::MEDIA_SERVICES_ASSET_NAME . $this->createSuffix());
     $asset = $this->createAsset($asset);
     $access = new AccessPolicy(TestResources::MEDIA_SERVICES_ACCESS_POLICY_NAME . $this->createSuffix());
     $access->setDurationInMinutes(30);
     $access->setPermissions(AccessPolicy::PERMISSIONS_WRITE);
     $access = $this->createAccessPolicy($access);
     $locator = new Locator($asset, $access, Locator::TYPE_SAS);
     $locator->setName(TestResources::MEDIA_SERVICES_LOCATOR_NAME . $this->createSuffix());
     $locator->setStartTime(new \DateTime('now -5 minutes'));
     $locator = $this->createLocator($locator);
     $fileName = TestResources::MEDIA_SERVICES_DUMMY_FILE_NAME;
     $this->restProxy->uploadAssetFile($locator, $fileName, TestResources::MEDIA_SERVICES_DUMMY_FILE_CONTENT);
     // Test
     $this->restProxy->createFileInfos($asset);
     // Assert
     $assetFiles = $this->restProxy->getAssetFileList();
     $result = $this->restProxy->getAssetFile($assetFiles[0]);
     $this->assertGreaterThanOrEqual(1, count($assetFiles));
     //this changes with the user's permissions
     $this->assertEquals($fileName, $assetFiles[0]->getName());
     $this->assertEquals($asset->getId(), $assetFiles[0]->getParentAssetId());
 }
コード例 #4
0
 private function publishAsset($asset)
 {
     $accessPolicy = new AccessPolicy("read access policy");
     $accessPolicy->setDurationInMinutes(self::ACCESS_POLICY_READ_DURATION_M);
     $accessPolicy->setPermissions(AccessPolicy::PERMISSIONS_READ);
     $accessPolicy = $this->_mediaServiceProxy->createAccessPolicy($accessPolicy);
     $locator = new Locator($asset, $accessPolicy, Locator::TYPE_SAS);
     $locator->setStartTime(new \DateTime('now -5 minutes'));
     $locator = $this->_mediaServiceProxy->createLocator($locator);
     return $locator;
 }
 /**
  * @covers WindowsAzure\MediaServices\MediaServicesRestProxy::createAsset
  * @covers WindowsAzure\MediaServices\MediaServicesRestProxy::createAccessPolicy
  * @covers WindowsAzure\MediaServices\MediaServicesRestProxy::createLocator
  */
 public function testCreatingOriginUrlForStreamingContent()
 {
     // Setup
     $asset = $this->createAssetWithFilesForStream();
     $accessPolicy = new AccessPolicy(TestResources::MEDIA_SERVICES_ACCESS_POLICY_NAME . $this->createSuffix());
     $accessPolicy->setDurationInMinutes(300);
     $accessPolicy->setPermissions(AccessPolicy::PERMISSIONS_READ);
     $accessPolicy = $this->createAccessPolicy($accessPolicy);
     $locator = new Locator($asset, $accessPolicy, Locator::TYPE_ON_DEMAND_ORIGIN);
     $locator->setName(TestResources::MEDIA_SERVICES_LOCATOR_NAME . $this->createSuffix());
     $locator->setStartTime(new \DateTime('now -5 minutes'));
     $locator = $this->createLocator($locator);
     $expectedFileContent = TestResources::getSmallIsmc();
     // without sleep() Locator hasn't enough time to create URL, so that's why we have to use at least sleep(30)
     sleep(40);
     // Test
     $method = Resources::HTTP_GET;
     $url = new Url($locator->getPath() . '/' . TestResources::MEDIA_SERVICES_ISM_FILE_NAME . '/' . TestResources::MEDIA_SERVICES_STREAM_APPEND);
     $filters = array();
     $statusCode = Resources::STATUS_OK;
     $httpClient = new HttpClient();
     $httpClient->setMethod($method);
     $httpClient->setExpectedStatusCode($statusCode);
     $result = $httpClient->send($filters, $url);
     // Assert
     $this->assertEquals($expectedFileContent, $result);
 }
 public function createAssetWithFilesForStream()
 {
     $asset = new Asset(Asset::OPTIONS_NONE);
     $asset->setName(TestResources::MEDIA_SERVICES_ASSET_NAME . $this->createSuffix());
     $asset = $this->createAsset($asset);
     $access = new AccessPolicy(TestResources::MEDIA_SERVICES_ACCESS_POLICY_NAME . $this->createSuffix());
     $access->setDurationInMinutes(30);
     $access->setPermissions(AccessPolicy::PERMISSIONS_WRITE);
     $access = $this->createAccessPolicy($access);
     $locator = new Locator($asset, $access, Locator::TYPE_SAS);
     $locator->setName(TestResources::MEDIA_SERVICES_LOCATOR_NAME . $this->createSuffix());
     $locator->setStartTime(new \DateTime('now -5 minutes'));
     $locator = $this->createLocator($locator);
     $firstFile = TestResources::getSmallIsm();
     $secondFile = TestResources::getSmallIsmc();
     $this->restProxy->uploadAssetFile($locator, TestResources::MEDIA_SERVICES_ISM_FILE_NAME, $firstFile);
     $this->restProxy->uploadAssetFile($locator, TestResources::MEDIA_SERVICES_ISMC_FILE_NAME, $secondFile);
     $this->restProxy->createFileInfos($asset);
     return $asset;
 }
コード例 #7
0
function uploadFileAndCreateAsset($restProxy, $mezzanineFileName)
{
    // 1.1. create an empty "Asset" by specifying the name
    $asset = new Asset(Asset::OPTIONS_NONE);
    $asset->setName('Mezzanine ' . basename($mezzanineFileName));
    $asset = $restProxy->createAsset($asset);
    $assetId = $asset->getId();
    echo "Asset created: name={$asset->getName()} id={$assetId}" . PHP_EOL;
    // 1.3. create an Access Policy with Write permissions
    $accessPolicy = new AccessPolicy('UploadAccessPolicy');
    $accessPolicy->setDurationInMinutes(60.0);
    $accessPolicy->setPermissions(AccessPolicy::PERMISSIONS_WRITE);
    $accessPolicy = $restProxy->createAccessPolicy($accessPolicy);
    // 1.4. create a SAS Locator for the Asset
    $sasLocator = new Locator($asset, $accessPolicy, Locator::TYPE_SAS);
    $sasLocator->setStartTime(new \DateTime('now -5 minutes'));
    $sasLocator = $restProxy->createLocator($sasLocator);
    // 1.5. get the mezzanine file content
    $fileContent = file_get_contents($mezzanineFileName);
    echo "Uploading..." . PHP_EOL;
    // 1.6. use the 'uploadAssetFile' to perform a multi-part upload using the Block Blobs REST API storage operations
    $restProxy->uploadAssetFile($sasLocator, basename($mezzanineFileName), $fileContent);
    // 1.7. notify Media Services that the file upload operation is done to generate the asset file metadata
    $restProxy->createFileInfos($asset);
    echo "File uploaded: size=" . strlen($fileContent) . PHP_EOL;
    // 1.8. delete the SAS Locator (and Access Policy) for the Asset since we are done uploading files
    $restProxy->deleteLocator($sasLocator);
    $restProxy->deleteAccessPolicy($accessPolicy);
    return $asset;
}
コード例 #8
0
// 1.1. set up the MediaServicesService object to call into the Media Services REST API.
$restProxy = ServicesBuilder::getInstance()->createMediaServicesService(new MediaServicesSettings($account, $secret));
// 1.2. create an empty "Asset" by specifying the name and Storage account to use
$asset = new Asset(Asset::OPTIONS_NONE);
$asset->setName("Mezzanine " . $mezzanineFileName);
$asset = $restProxy->createAsset($asset);
$assetId = $asset->getId();
print "Asset created: name=" . $asset->getName() . " id=" . $assetId . "\r\n";
// 1.3. create an Access Policy with Write permissions
$accessPolicy = new AccessPolicy('UploadAccessPolicy');
$accessPolicy->setDurationInMinutes(60.0);
$accessPolicy->setPermissions(AccessPolicy::PERMISSIONS_WRITE);
$accessPolicy = $restProxy->createAccessPolicy($accessPolicy);
// 1.4. create a SAS Locator for the Asset
$sasLocator = new Locator($asset, $accessPolicy, Locator::TYPE_SAS);
$sasLocator->setStartTime(new \DateTime('now -5 minutes'));
$sasLocator = $restProxy->createLocator($sasLocator);
// 1.5. get the mezzanine file content
$fileContent = file_get_contents($mezzanineFileName);
print "Uploading...\r\n";
// 1.6. use the 'uploadAssetFile' to perform a multi-part upload using the Block Blobs REST API storage operations
$restProxy->uploadAssetFile($sasLocator, $mezzanineFileName, $fileContent);
// 1.7. notify Media Services that the file upload operation is done to generate the asset file metadata
$restProxy->createFileInfos($asset);
print "File uploaded: size=" . strlen($fileContent) . "\r\n";
// 1.8. delete the SAS Locator (and Access Policy) for the Asset since we are done uploading files
$restProxy->deleteLocator($sasLocator);
$restProxy->deleteAccessPolicy($accessPolicy);
// Phase 2 - encode the output asset
// 2.1 retrieve the last Media Encoder Standard
$mediaProcessor = $restProxy->getLatestMediaProcessor('Media Encoder Standard');
 public function uploadSingleFile($fileName, $fileContent)
 {
     $asset = new Asset(Asset::OPTIONS_NONE);
     $asset->setName($fileName);
     $asset = $this->createAsset($asset);
     $access = new AccessPolicy(TestResources::MEDIA_SERVICES_ACCESS_POLICY_NAME . $this->createSuffix());
     $access->setDurationInMinutes(30);
     $access->setPermissions(AccessPolicy::PERMISSIONS_WRITE);
     $access = $this->createAccessPolicy($access);
     $locator = new Locator($asset, $access, Locator::TYPE_SAS);
     $locator->setName(TestResources::MEDIA_SERVICES_LOCATOR_NAME . $this->createSuffix());
     $locator->setStartTime(new \DateTime('now -5 minutes'));
     $locator = $this->createLocator($locator);
     $this->restProxy->uploadAssetFile($locator, $fileName, $fileContent);
     $this->restProxy->createFileInfos($asset);
     $list = $this->restProxy->getAssetAssetFileList($asset);
     if (isset($list[0])) {
         $list[0]->setIsPrimary(true);
         $this->restProxy->updateAssetFile($list[0]);
     } else {
         throw new Exception("unable to find the asset file");
     }
     return $asset;
 }
コード例 #10
0
 public function uploadFile($fileName, $fileContent)
 {
     $asset = new Asset(Asset::OPTIONS_NONE);
     $asset->setName(TestResources::MEDIA_SERVICES_ASSET_NAME . $this->createSuffix());
     $asset = $this->createAsset($asset);
     $access = new AccessPolicy(TestResources::MEDIA_SERVICES_ACCESS_POLICY_NAME . $this->createSuffix());
     $access->setDurationInMinutes(30);
     $access->setPermissions(AccessPolicy::PERMISSIONS_WRITE);
     $access = $this->createAccessPolicy($access);
     $locator = new Locator($asset, $access, Locator::TYPE_SAS);
     $locator->setName(TestResources::MEDIA_SERVICES_LOCATOR_NAME . $this->createSuffix());
     $locator->setStartTime(new \DateTime('now -5 minutes'));
     $locator = $this->createLocator($locator);
     $this->restProxy->uploadAssetFile($locator, $fileName, $fileContent);
     $this->restProxy->createFileInfos($asset);
     $accessPolicy = new AccessPolicy(TestResources::MEDIA_SERVICES_ACCESS_POLICY_NAME . $this->createSuffix());
     $accessPolicy->setDurationInMinutes(300);
     $accessPolicy->setPermissions(AccessPolicy::PERMISSIONS_READ);
     $accessPolicy = $this->createAccessPolicy($accessPolicy);
     $locator = new Locator($asset, $accessPolicy, Locator::TYPE_SAS);
     $locator->setName(TestResources::MEDIA_SERVICES_LOCATOR_NAME . $this->createSuffix());
     $locator->setStartTime(new \DateTime('now -5 minutes'));
     $locator = $this->createLocator($locator);
     // without sleep() Locator hasn't enough time to create URL, so that's why we have to use at least sleep(30)
     sleep(40);
     $method = Resources::HTTP_GET;
     $url = new Url($locator->getBaseUri() . '/' . $fileName . $locator->getContentAccessComponent());
     $filters = array();
     $statusCode = Resources::STATUS_OK;
     $httpClient = new HttpClient();
     $httpClient->setMethod($method);
     $httpClient->setExpectedStatusCode($statusCode);
     return $httpClient->send($filters, $url);
 }
コード例 #11
0
function downloadAssetFiles($restProxy, $asset, $destinationPath)
{
    // Create destination directory if does not exist
    if (!file_exists($destinationPath)) {
        mkdir($destinationPath);
    }
    // Create an Access Policy with Read permissions
    $accessPolicy = new AccessPolicy('DownloadAccessPolicy');
    $accessPolicy->setDurationInMinutes(60.0);
    $accessPolicy->setPermissions(AccessPolicy::PERMISSIONS_READ);
    $accessPolicy = $restProxy->createAccessPolicy($accessPolicy);
    // Create a SAS Locator for the Asset
    $sasLocator = new Locator($asset, $accessPolicy, Locator::TYPE_SAS);
    $sasLocator->setStartTime(new \DateTime('now -5 minutes'));
    $sasLocator = $restProxy->createLocator($sasLocator);
    $files = $restProxy->getAssetAssetFileList($asset);
    // Download Asset Files
    foreach ($files as $file) {
        echo "Downloading {$file->getName()} output file...";
        $restProxy->downloadAssetFile($file, $sasLocator, $destinationPath);
        echo "Done!" . PHP_EOL;
    }
    // Clean up Locator and Access Policy
    $restProxy->deleteLocator($sasLocator);
    $restProxy->deleteAccessPolicy($accessPolicy);
}