Example #1
0
/**
 * @param    string  object_id   S3 object ID
 * @param    int     $expires    Expiration timestamp
 * @param    string  $method     HTTP method, default GET
 * @return   string  Signed URL
 */
function s3_signed_object_url($object_id, $expires, $method = 'GET')
{
    $object_id_scrubbed = str_replace('+', '%20', str_replace('%2F', '/', rawurlencode($object_id)));
    $sign_string = s3_sign_auth_string(sprintf("%s\n\n\n%d\n/%s/%s", $method, $expires, S3_BUCKET_ID, $object_id_scrubbed));
    return sprintf('http://%s.s3.amazonaws.com/%s?Signature=%s&AWSAccessKeyId=%s&Expires=%d', S3_BUCKET_ID, $object_id_scrubbed, urlencode(base64_encode($sign_string)), urlencode(AWS_ACCESS_KEY), urlencode($expires));
}
Example #2
0
function s3_signed_object_url($bucket, $id, $more = array())
{
    $defaults = array('method' => 'GET', 'expires' => time() + 300);
    $args = array_merge($defaults, $more);
    $id = s3_enurlify_object_id($id);
    $path = "/{$bucket['id']}/{$id}";
    $parts = array($args['method'], null, null, $args['expires'], $path);
    $raw = implode("\n", $parts);
    $sig = s3_sign_auth_string($bucket, $raw);
    $sig = base64_encode($sig);
    $query = array('Signature' => $sig, 'AWSAccessKeyId' => $bucket['key'], 'Expires' => $args['expires']);
    $query = http_build_query($query);
    $url = s3_unsigned_object_url($bucket, $id);
    return $url . "?" . $query;
}