getSignedUrl( $options['url'], isset($options['expires']) ? $options['expires'] : null, isset($options['policy']) ? $options['policy'] : null ); } /** * Create a signed Amazon CloudFront cookie. * * This method accepts an array of configuration options: * * - url: (string) URL of the resource being signed (can include query * string and wildcards). For example: 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 array Key => value pairs of signed cookies to set * @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 getSignedCookie(array $options) { foreach (['key_pair_id', 'private_key'] as $required) { if (!isset($options[$required])) { throw new \InvalidArgumentException("$required is required"); } } $cookieSigner = new CookieSigner( $options['key_pair_id'], $options['private_key'] ); return $cookieSigner->getSignedCookie( isset($options['url']) ? $options['url'] : null, isset($options['expires']) ? $options['expires'] : null, isset($options['policy']) ? $options['policy'] : null ); } }