Untitled
By: a guest | Mar 22nd, 2010 | Syntax:
PHP | Size: 1.25 KB | Hits: 100 | Expires: Never
function s3_api_private_url($file, $bucket, $lifetime_in_seconds = 7200) {
// key
$aws_s3_key = variable_get('s3_api_key', "");
// password
$aws_s3_secret = variable_get('s3_api_skey', "");
// $object = $file;
if(strlen($file) == 0)
return;
//get filename
$s3_filename = $file->filename;
$string_to_sign = "GET\n\n\n{$lifetime_in_seconds}\n/{$bucket}/{$s3_filename}";
$signature = urlencode(base64_encode((hash_hmac("sha1", utf8_encode($string_to_sign), $aws_s3_secret, TRUE))));
$authentication_params = "AWSAccessKeyId=" . $aws_s3_key;
$authentication_params.= "&Expires={$lifetime_in_seconds}";
$authentication_params.= "&Signature={$signature}";
// Create the return filepath. We add the bucket file path if
// the a custom domain is not being used
// Create the return filepath.
// We add the bucket file path if http(s)://s3.amazonaws.com is being used as the s3 url
$default_s3_url = variable_get('s3_api_default_server_url', "https://s3.amazonaws.com/");
preg_match('@^(?:https?://)?([^/]+)@i', $default_s3_url, $domain);
if ($domain[1] == 's3.amazonaws.com') {
$s3_filename = $bucket . '/' . $s3_filename;
}
return $default_s3_url . $s3_filename . "?{$authentication_params}";
}