Sha256: 8a63d794aec977a53d578fa7833851ab2653614ff7cfdeefaeca70aa1849fd69

Contents?: true

Size: 1.23 KB

Versions: 13

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

require 'base64'
require 'uri'
require 'time'
require 'openssl'

module Aws
  module CloudFront

    # Allows you to create signed URLs for Amazon CloudFront resources
    #
    #     signer = Aws::CloudFront::UrlSigner.new(
    #       key_pair_id: "cf-keypair-id",
    #       private_key_path: "./unit_test_dummy_key"
    #     )
    #     url = signer.signed_url(url,
    #       policy: policy.to_json
    #     )
    #
    class UrlSigner
      include Signer

      # create a signed Amazon CloudFront URL
      # @param [String] url
      # @option params [Time, DateTime, Date, String, Integer<timestamp>] :expires
      # @option params [String<JSON>] :policy
      def signed_url(url, params = {})
        scheme, uri = scheme_and_uri(url)
        signed_content = signature(
          resource: resource(scheme, uri),
          expires: time(params[:expires]),
          policy: params[:policy]
        )

        start_flag = uri.include?('?') ? '&' : '?'
        signature = signed_content.map{ |k, v| "#{k}=#{v}" }.join('&').gsub("\n", '')
        uri = "#{uri}#{start_flag}#{signature}"

        if scheme == 'rtmp'
          rtmp_url(URI(uri))
        else
          uri
        end
      end

    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
aws-sdk-cloudfront-1.86.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.85.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.84.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.83.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.82.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.81.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.80.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.79.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.78.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.77.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.76.0 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.75.2 lib/aws-sdk-cloudfront/url_signer.rb
aws-sdk-cloudfront-1.75.1 lib/aws-sdk-cloudfront/url_signer.rb