/** * Create a signed Amazon CloudFront URL. * * This method accepts an array of configuration options: * * - url: (string) URL of the resource being signed (can include query * string and wildcards). For example: rtmp://s5c39gqb8ow64r.cloudfront.net/videos/mp3_name.mp3 * http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes * - policy: (string) JSON policy. Use this option when creating a signed * URL for a custom policy. * - expires: (int) UTC Unix timestamp used when signing with a canned * policy. Not required when passing a custom 'policy' option. * - key_pair_id: (string) The ID of the key pair used to sign CloudFront * URLs for private distributions. * - private_key: (string) The filepath ot the private key used to sign * CloudFront URLs for private distributions. * * @param array $options Array of configuration options used when signing * * @return string Signed URL with authentication parameters * @throws \InvalidArgumentException if url, key_pair_id, or private_key * were not specified. * @link http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/WorkingWithStreamingDistributions.html */ public function getSignedUrl(array $options) { foreach (['url', 'key_pair_id', 'private_key'] as $required) { if (!isset($options[$required])) { throw new \InvalidArgumentException("{$required} is required"); } } $UrlSigner = new UrlSigner($options['key_pair_id'], $options['private_key']); return $UrlSigner->getSignedUrl($options['url'], isset($options['expires']) ? $options['expires'] : null, isset($options['policy']) ? $options['policy'] : null); }
/** * Create a signed Amazon CloudFront URL. * * This method accepts an array of configuration options: * * - url: (string) URL of the resource being signed (can include query * string and wildcards). For example: rtmp://s5c39gqb8ow64r.cloudfront.net/videos/mp3_name.mp3 * http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes * - policy: (string) JSON policy. Use this option when creating a signed * URL for a custom policy. * - expires: (int) UTC Unix timestamp used when signing with a canned * policy. Not required when passing a custom 'policy' option. * - key_pair_id: (string) The ID of the key pair used to sign CloudFront * URLs for private distributions. * - private_key: (string) The filepath ot the private key used to sign * CloudFront URLs for private distributions. * * @param array $options Array of configuration options used when signing * * @return string Signed URL with authentication parameters * @throws \InvalidArgumentException if url, key_pair_id, or private_key * were not specified. * @link http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/WorkingWithStreamingDistributions.html */ public function getSignedUrl(array $options) { $options = Collection::fromConfig($options, [], ['url', 'key_pair_id', 'private_key']); $UrlSigner = new UrlSigner($options['key_pair_id'], $options['private_key']); return $UrlSigner->getUrlSigner($options['url'], $options['expires'], $options['policy']); }