Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 22nd, 2010 | Syntax: PHP | Size: 1.25 KB | Hits: 100 | Expires: Never
Copy text to clipboard
  1. function s3_api_private_url($file, $bucket, $lifetime_in_seconds = 7200) {
  2.   // key
  3.   $aws_s3_key = variable_get('s3_api_key', "");
  4.   // password
  5.   $aws_s3_secret = variable_get('s3_api_skey', "");
  6.  
  7. //  $object = $file;
  8.  
  9.   if(strlen($file) == 0)
  10.     return;
  11.   //get filename
  12.   $s3_filename = $file->filename;
  13.  
  14.   $string_to_sign = "GET\n\n\n{$lifetime_in_seconds}\n/{$bucket}/{$s3_filename}";
  15.   $signature = urlencode(base64_encode((hash_hmac("sha1", utf8_encode($string_to_sign), $aws_s3_secret, TRUE))));
  16.  
  17.   $authentication_params = "AWSAccessKeyId=" . $aws_s3_key;
  18.   $authentication_params.= "&Expires={$lifetime_in_seconds}";
  19.   $authentication_params.= "&Signature={$signature}";
  20.  
  21.   // Create the return filepath. We add the bucket file path if
  22.   // the a custom domain is not being used
  23.   // Create the return filepath.
  24.   // We add the bucket file path if http(s)://s3.amazonaws.com is being used as the s3 url
  25.   $default_s3_url = variable_get('s3_api_default_server_url', "https://s3.amazonaws.com/");
  26.   preg_match('@^(?:https?://)?([^/]+)@i', $default_s3_url, $domain);
  27.   if ($domain[1] == 's3.amazonaws.com') {
  28.     $s3_filename = $bucket . '/' . $s3_filename;
  29.   }
  30.   return $default_s3_url . $s3_filename . "?{$authentication_params}";
  31. }