Skip to content

Commit

Permalink
added filename and updated download parameters in get_stream_url
Browse files Browse the repository at this point in the history
  • Loading branch information
jererc committed Jan 5, 2012
1 parent a992295 commit 3763e69
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 9 deletions.
12 changes: 9 additions & 3 deletions CloudKey.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public function get_stream_url($args)
$extension = '';
$version = '';
$download = false;
$filename = '';
extract($args);
if ($extension == '')
{
Expand All @@ -91,12 +92,17 @@ public function get_stream_url($args)
}
if (strncmp('jpeg_thumbnail_', $asset_name, 15) == 0)
{
return sprintf('http://static.dmcloud.net/%s/%s/%s%s.%s', $this->user_id, $id, $asset_name, $version, $extension);
return sprintf('http://static.dmcloud.net/%s/%s/%s%s.%s', $this->user_id, $id, $asset_name, $version, $extension);
}
else
{
$url = sprintf('%s/route/%s/%s/%s%s%s', $this->cdn_url, $this->user_id, $id, $asset_name, $version, $extension != '' ? ".$extension" : '');
return CloudKey_Helpers::sign_url($url, $this->api_key, $seclevel, $asnum, $ip, $useragent, $countries, $referers, $expires) . ($download ? '&throttle=0&helper=0&cache=0' : '');
$protocol = ($download or $filename) ? 'http' : null;
$url = sprintf('%s/route%s/%s/%s/%s%s%s', $this->cdn_url, $protocol ? "/$protocol" : '', $this->user_id, $id, $asset_name, $version, $extension != '' ? ".$extension" : '');
if ($filename)
{
$url = sprintf('%s?filename=%s', $url, urlencode(utf8_encode($filename)));
}
return CloudKey_Helpers::sign_url($url, $this->api_key, $seclevel, $asnum, $ip, $useragent, $countries, $referers, $expires);
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ Arguments:
- `asset_name`: the desired media asset asset_name name (default is `mp4_h264_aac`).
- `seclevel`: the security level bitmask (default is `CLOUDKEY_SECLEVEL_NONE`, see below for details).
- `expires`: the UNIX epoch expiration time (default is `time() + 7200` (2 hours from now)).
- `download`: `True` to get the download url (default is `False`).
- `filename`: the download url filename (overrides the `download` parameter if set).
- `version`: arbitrary integer inserted in the url for the cache flush.
Use this parameter only if needed, and change its value only when a cache flush is required.

Expand Down
67 changes: 61 additions & 6 deletions test.php
Original file line number Diff line number Diff line change
Expand Up @@ -519,18 +519,15 @@ public function testGetStreamUrl()
$media = $this->cloudkey->media->create(array('assets_names' => $assets, 'url' => $file->url));

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'jpeg_thumbnail_medium'));

$res_test = sprintf('http://static.dmcloud.net/%s/%s/jpeg_thumbnail_medium.jpeg', $user_id, $media->id);
$this->assertEquals($res, $res_test);

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'mp4_h264_aac'));

$res_test = sprintf('/route/%s/%s/mp4_h264_aac.mp4?', $user_id, $media->id);
$this->assertContains($res_test, $res);

}

public function testGetStreamUrl_with_version()
public function testGetStreamUrl_version()
{
global $user_id, $api_key, $base_url;

Expand All @@ -541,14 +538,72 @@ public function testGetStreamUrl_with_version()
$version = 3546546546;

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'jpeg_thumbnail_medium', 'version' => $version));

$res_test = sprintf('http://static.dmcloud.net/%s/%s/jpeg_thumbnail_medium-%s.jpeg', $user_id, $media->id, $version);
$this->assertEquals($res, $res_test);

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'mp4_h264_aac', 'version' => $version));

$res_test = sprintf('/route/%s/%s/mp4_h264_aac-%s.mp4?', $user_id, $media->id, $version);
$this->assertContains($res_test, $res);
}

public function testGetStreamUrl_download_no_filename()
{
global $user_id, $api_key, $base_url;

$file = $this->cloudkey->file->upload_file('.fixtures/video.3gp');
$assets = array('mp4_h264_aac', 'jpeg_thumbnail_medium');
$media = $this->cloudkey->media->create(array('assets_names' => $assets, 'url' => $file->url));

$download = true;
$filename = null;

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'jpeg_thumbnail_medium', 'download' => $download, 'filename' => $filename));
$res_test = sprintf('http://static.dmcloud.net/%s/%s/jpeg_thumbnail_medium.jpeg', $user_id, $media->id);
$this->assertEquals($res, $res_test);

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'mp4_h264_aac', 'download' => $download, 'filename' => $filename));
$res_test = sprintf('/route/http/%s/%s/mp4_h264_aac.mp4?', $user_id, $media->id);
$this->assertContains($res_test, $res);
}

public function testGetStreamUrl_filename_no_download()
{
global $user_id, $api_key, $base_url;

$file = $this->cloudkey->file->upload_file('.fixtures/video.3gp');
$assets = array('mp4_h264_aac', 'jpeg_thumbnail_medium');
$media = $this->cloudkey->media->create(array('assets_names' => $assets, 'url' => $file->url));

$download = false;
$filename = 'test_filename.mp4';

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'jpeg_thumbnail_medium', 'download' => $download, 'filename' => $filename));
$res_test = sprintf('http://static.dmcloud.net/%s/%s/jpeg_thumbnail_medium.jpeg', $user_id, $media->id);
$this->assertEquals($res, $res_test);

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'mp4_h264_aac', 'download' => $download, 'filename' => $filename));
$res_test = sprintf('/route/http/%s/%s/mp4_h264_aac.mp4?filename=%s', $user_id, $media->id, urlencode(utf8_encode($filename)));
$this->assertContains($res_test, $res);
}

public function testGetStreamUrl_no_filename_no_download()
{
global $user_id, $api_key, $base_url;

$file = $this->cloudkey->file->upload_file('.fixtures/video.3gp');
$assets = array('mp4_h264_aac', 'jpeg_thumbnail_medium');
$media = $this->cloudkey->media->create(array('assets_names' => $assets, 'url' => $file->url));

$download = false;
$filename = '';

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'jpeg_thumbnail_medium', 'download' => $download, 'filename' => $filename));
$res_test = sprintf('http://static.dmcloud.net/%s/%s/jpeg_thumbnail_medium.jpeg', $user_id, $media->id);
$this->assertEquals($res, $res_test);

$res = $this->cloudkey->media->get_stream_url(array('id' => $media->id, 'asset_name' => 'mp4_h264_aac', 'download' => $download, 'filename' => $filename));
$res_test = sprintf('/route/%s/%s/mp4_h264_aac.mp4?', $user_id, $media->id);
$this->assertContains($res_test, $res);
}

}

0 comments on commit 3763e69

Please sign in to comment.