Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 25 additions & 17 deletions lib/cloudfrontUtil.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ var CannedPolicy = require('./CannedPolicy');
/**
* Build an AWS signed URL.
*
* @param {String} CloudFront resource URL
* @param {Object} Signature parameters
* @param {String} cfUrl CloudFront resource URL
* @param {Object} params Signature parameters
* @param {boolean} queryParamsOnly Remove resource URL from signed Cloudfront URL
* @return {String} Signed CloudFront URL
*/
function getSignedUrl(cfUrl, params) {
function getSignedUrl(cfUrl, params, queryParamsOnly) {
var privateKey = _getPrivateKey(params);
var policy = _createPolicy(
cfUrl, _getExpireTime(params), _getIpRange(params));
Expand All @@ -36,16 +37,23 @@ function getSignedUrl(cfUrl, params) {
'Key-Pair-Id': params.keypairId
});

var formattedUrl = parsedUrl.format();

// Remove everything but query parameters
if (queryParamsOnly) {
formattedUrl = formattedUrl.substr(cfUrl.length);
}

// Return a formatted URL string with signature.
return parsedUrl.format();
return formattedUrl;
}

/**
* Build an AWS signed RTMP URL assuming your distribution supports this.
*
* @param {String} Cloudfront domain
* @param {String} S3 key
* @param {Object} Signature parameters
* @param {String} domainname Cloudfront domain
* @param {String} s3key S3 key
* @param {Object} params Signature parameters
* @return {Object} Cloudfront server path and stream name with RTMP formatting
*/
function getSignedRTMPUrl(domainname, s3key, params) {
Expand Down Expand Up @@ -73,11 +81,11 @@ function getSignedRTMPUrl(domainname, s3key, params) {
/**
* Build list of cookies for the specified resource
*
* @param {String} CloudFront resource URL
* @param {Object} Signature parameters
* @return {String} List of CloudFront cookies
* @param {String} cfUrl CloudFront resource URL
* @param {Object} params Signature parameters
* @return {Object} List of CloudFront cookies
*/
function getSignedCookies(cfUrl, params){
function getSignedCookies(cfUrl, params) {
var privateKey = _getPrivateKey(params);
var policy = _createPolicy(
cfUrl, _getExpireTime(params), _getIpRange(params));
Expand All @@ -102,7 +110,7 @@ function getSignedCookies(cfUrl, params){
* For more information, see
* http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-canned-policy.html
*
* @param {String}: Base64 encoded string
* @param {String} str Base64 encoded string
*/
function normalizeBase64(str) {
return str
Expand Down Expand Up @@ -131,9 +139,9 @@ function normalizeSignature(sig) {
* Create an AWS policy.
*
* @private
* @param {string} CloudFront resource URL
* @param {Number|Moment|Date} URL expiration time
* @param {string} Source IP range in CIDER notation
* @param {string} cfUrl CloudFront resource URL
* @param {Number|moment|Date} expireTime URL expiration time
* @param {string} ipRange Source IP range in CIDER notation
* @returns {Object} AWS policy object
*/
function _createPolicy(cfUrl, expireTime, ipRange) {
Expand All @@ -148,8 +156,8 @@ function _createPolicy(cfUrl, expireTime, ipRange) {
* Create a policy signature.
*
* @private
* @param {Object} AWS policy
* @param {string} private key string for signature
* @param {Object} policy AWS policy
* @param {string} privateKey private key string for signature
* @returns {string} Base64 encoded signature
*/
function _createPolicySignature(policy, privateKey) {
Expand Down