class Fog::AWS::CDN::Real

Public Class Methods

new(options={}) click to toggle source

Initialize connection to Cloudfront

Notes

options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection

Examples

cdn = Fog::AWS::CDN.new(
  :aws_access_key_id => your_aws_access_key_id,
  :aws_secret_access_key => your_aws_secret_access_key
)

Parameters

  • options<~Hash> - config arguments for connection. Defaults to {}.

Returns

  • cdn object with connection to aws.

# File lib/fog/aws/cdn.rb, line 142
def initialize(options={})

  @use_iam_profile = options[:use_iam_profile]
  setup_credentials(options)
  @instrumentor      = options[:instrumentor]
  @instrumentor_name = options[:instrumentor_name] || 'fog.aws.cdn'
  @connection_options = options[:connection_options] || {}
  @host       = options[:host]      || 'cloudfront.amazonaws.com'
  @path       = options[:path]      || '/'
  @persistent = options.fetch(:persistent, true)
  @port       = options[:port]      || 443
  @scheme     = options[:scheme]    || 'https'
  @version    = options[:version]  || '2010-11-01'
  @connection = Fog::XML::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
end

Public Instance Methods

delete_distribution(distribution_id, etag) click to toggle source

Delete a distribution from CloudFront.

@param distribution_id [String] Id of distribution to delete. @param etag [String] etag of that distribution from earlier get or put

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/DeleteDistribution.html

# File lib/fog/aws/requests/cdn/delete_distribution.rb, line 12
def delete_distribution(distribution_id, etag)
  request({
    :expects    => 204,
    :headers    => { 'If-Match' => etag },
    :idempotent => true,
    :method     => 'DELETE',
    :path       => "/distribution/#{distribution_id}"
  })
end
delete_streaming_distribution(distribution_id, etag) click to toggle source

Delete a streaming distribution from CloudFront.

@param [String] distribution_id Id of distribution to delete. @param [String] etag Etag of that distribution from earlier get or put

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/DeleteStreamingDistribution.html

# File lib/fog/aws/requests/cdn/delete_streaming_distribution.rb, line 12
def delete_streaming_distribution(distribution_id, etag)
  request({
    :expects    => 204,
    :headers    => { 'If-Match' => etag },
    :idempotent => true,
    :method     => 'DELETE',
    :path       => "/streaming-distribution/#{distribution_id}"
  })
end
get_distribution(distribution_id) click to toggle source

Get information about a distribution from CloudFront.

@param distribution_id [String] Id of distribution.

@return [Excon::Response]

* body [Hash]:
  * S3Origin [Hash]:
    * DNSName [String] - Origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'.
    * OriginAccessIdentity [String] - Optional: Used when serving private content.
  or
  * CustomOrigin [Hash]:
    * DNSName [String] - Origin to associate with distribution, ie 'www.example.com'.
    * HTTPPort [Integer] - HTTP port of origin, in [80, 443] or (1024...65535).
    * HTTPSPort [Integer] - HTTPS port of origin, in [80, 443] or (1024...65535).
    * OriginProtocolPolicy [String] - Policy on using http vs https, in ['http-only', 'match-viewer'].

  * Id [String] Id of distribution.
  * LastModifiedTime [String] - Timestamp of last modification of distribution.
  * Status [String] - Status of distribution.
  * DistributionConfig [Array]:
    * CallerReference [String] - Used to prevent replay, defaults to Time.now.to_i.to_s.
    * CNAME [Array] - Array of associated cnames.
    * Comment [String] - Comment associated with distribution.
    * Enabled [Boolean] - Whether or not distribution is enabled.
    * InProgressInvalidationBatches [Integer] - Number of invalidation batches in progress.
    * Logging [Hash]:
      * Bucket [String] - Bucket logs are stored in.
      * Prefix [String] - Prefix logs are stored with.
    * Origin [String] - S3 origin bucket.
    * TrustedSigners [Array] - Trusted signers.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/GetDistribution.html

# File lib/fog/aws/requests/cdn/get_distribution.rb, line 40
def get_distribution(distribution_id)
  request({
    :expects    => 200,
    :idempotent => true,
    :method     => 'GET',
    :parser     => Fog::Parsers::AWS::CDN::Distribution.new,
    :path       => "/distribution/#{distribution_id}"
  })
end
get_distribution_list(options = {}) click to toggle source

List information about distributions in CloudFront.

@param options [Hash] Config arguments for list. @option options Marker [String] Limits object keys to only those that appear lexicographically after its value. @option options MaxItems [Integer] Limits number of object keys returned.

@return [Excon::Response]

* body [Hash]:
  * IsTruncated [Boolean] - Whether or not the listing is truncated.
  * Marker [String] Marker specified for query.
  * MaxItems [Integer] - Maximum number of keys specified for query.
  * NextMarker [String] - Marker to specify for next page (id of last result of current page).
  * DistributionSummary [Array]:
    * S3Origin [Hash]:
      * DNSName [String] - Origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'.
      * OriginAccessIdentity [String] - Optional: Used when serving private content.
    or
    * CustomOrigin [Hash]:
      * DNSName [String] - Origin to associate with distribution, ie 'www.example.com'.
      * HTTPPort [Integer] - HTTP port of origin, in [80, 443] or (1024...65535).
      * HTTPSPort [Integer] - HTTPS port of origin, in [80, 443] or (1024...65535).
    * OriginProtocolPolicy [String] - Policy on using http vs https, in ['http-only', 'match-viewer'].
    * Comment [String] - Comment associated with distribution.
    * CNAME [Array] - Array of associated cnames.
    * Enabled [Boolean] - Whether or not distribution is enabled.
    * Id [String] - Id of distribution.
    * LastModifiedTime [String] - Timestamp of last modification of distribution.
    * Origin [String] - S3 origin bucket.
    * Status [String] - Status of distribution.
    * TrustedSigners [Array] - Trusted signers.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/ListDistributions.html

# File lib/fog/aws/requests/cdn/get_distribution_list.rb, line 40
def get_distribution_list(options = {})
  request({
    :expects    => 200,
    :idempotent => true,
    :method   => 'GET',
    :parser   => Fog::Parsers::AWS::CDN::GetDistributionList.new,
    :path       => "/distribution",
    :query      => options
  })
end
get_invalidation(distribution_id, invalidation_id) click to toggle source

Get invalidation.

@param distribution_id [String] Distribution id. @param invalidation_id [String] Invalidation id.

@return [Excon::Response]

* body [Hash]:
  * Id [String] - Invalidation id.
  * Status [String]
  * CreateTime [String]
  * InvalidationBatch [Array]:
    * Path [String]

@see docs.amazonwebservices.com/AmazonCloudFront/2010-11-01/APIReference/GetInvalidation.html

# File lib/fog/aws/requests/cdn/get_invalidation.rb, line 22
def get_invalidation(distribution_id, invalidation_id)
  request({
    :expects    => 200,
    :idempotent => true,
    :method   => 'GET',
    :parser   => Fog::Parsers::AWS::CDN::GetInvalidation.new,
    :path       => "/distribution/#{distribution_id}/invalidation/#{invalidation_id}"
  })
end
get_invalidation_list(distribution_id, options = {}) click to toggle source

Get invalidation list.

@param options [Hash] Config arguments for list. @option options Marker [String] Limits object keys to only those that appear lexicographically after its value. @option options MaxItems [Integer] Limits number of object keys returned.

@return [Excon::Response]

* body [Hash]:
  * IsTruncated [Boolean] - Whether or not the listing is truncated.
  * Marker [String] - Marker specified for query.
  * MaxItems [Integer] - Maximum number of keys specified for query.
  * NextMarker [String] - Marker to specify for next page (id of last result of current page).
  * InvalidationSummary [Array]:
    * Id [String]
    * Status [String]

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/ListInvalidation.html

# File lib/fog/aws/requests/cdn/get_invalidation_list.rb, line 25
def get_invalidation_list(distribution_id, options = {})
  request({
    :expects    => 200,
    :idempotent => true,
    :method   => 'GET',
    :parser   => Fog::Parsers::AWS::CDN::GetInvalidationList.new,
    :path       => "/distribution/#{distribution_id}/invalidation",
    :query      => options
  })
end
get_streaming_distribution(distribution_id) click to toggle source

Get information about a streaming distribution from CloudFront.

@param distribution_id [String] Id of distribution.

@return [Excon::Response]

* body [Hash]:
  * S3Origin [Hash]:
    * DNSName [String] - Origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'.
    * OriginAccessIdentity [String] - Optional: Used when serving private content.
  * Id [String] - Id of distribution.
  * LastModifiedTime [String] - Timestamp of last modification of distribution.
  * Status [String] - Status of distribution.
  * StreamingDistributionConfig [Array]:
    * CallerReference [String] - Used to prevent replay, defaults to Time.now.to_i.to_s.
    * CNAME [Array] - Array of associated cnames.
    * Comment [String] - Comment associated with distribution.
    * Enabled [Boolean] - Whether or not distribution is enabled.
    * InProgressInvalidationBatches [Integer] - Number of invalidation batches in progress.
    * Logging [Hash]:
      * Bucket [String] - Bucket logs are stored in.
      * Prefix [String] - Prefix logs are stored with.
    * Origin [String] - S3 origin bucket.
    * TrustedSigners [Array] - Trusted signers.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/GetStreamingDistribution.html

# File lib/fog/aws/requests/cdn/get_streaming_distribution.rb, line 33
def get_streaming_distribution(distribution_id)
  request({
    :expects    => 200,
    :idempotent => true,
    :method     => 'GET',
    :parser     => Fog::Parsers::AWS::CDN::StreamingDistribution.new,
    :path       => "/streaming-distribution/#{distribution_id}"
  })
end
get_streaming_distribution_list(options = {}) click to toggle source

List information about distributions in CloudFront.

@param options [Hash] Config arguments for list. @option options Marker [String] Limits object keys to only those that appear lexicographically after its value. @option options MaxItems [Integer] Limits number of object keys returned.

@return [Excon::Response]

* body [Hash]:
  * IsTruncated [Boolean] - Whether or not the listing is truncated.
  * Marker [String] - Marker specified for query.
  * MaxItems [Integer] - Maximum number of keys specified for query.
  * NextMarker [String] - Marker to specify for next page (id of last result of current page).
  * StreamingDistributionSummary [Array]:
    * S3Origin [Hash]:
      * DNSName [String] - Origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'.
      * OriginAccessIdentity [String] - Optional: Used when serving private content.
    or
    * CustomOrigin [Hash]:
      * DNSName [String] - Origin to associate with distribution, ie 'www.example.com'.
      * HTTPPort [Integer] - HTTP port of origin, in [80, 443] or (1024...65535).
      * HTTPSPort [Integer] - HTTPS port of origin, in [80, 443] or (1024...65535).
    * OriginProtocolPolicy [String] - Policy on using http vs https, in ['http-only', 'match-viewer'].
    * Comment [String] - Comment associated with distribution.
    * CNAME [Array] - Array of associated cnames.
    * Enabled [Boolean] - Whether or not distribution is enabled.
    * Id [String] - Id of distribution.
    * LastModifiedTime [String] - Timestamp of last modification of distribution.
    * Origin [String] - S3 origin bucket.
    * Status [String] - Status of distribution.
    * TrustedSigners [Array] - Trusted signers.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/ListStreamingDistributions.html

# File lib/fog/aws/requests/cdn/get_streaming_distribution_list.rb, line 40
def get_streaming_distribution_list(options = {})
  request({
    :expects    => 200,
    :idempotent => true,
    :method   => 'GET',
    :parser   => Fog::Parsers::AWS::CDN::GetStreamingDistributionList.new,
    :path       => "/streaming-distribution",
    :query      => options
  })
end
post_distribution(options = {}) click to toggle source

Create a new distribution in CloudFront.

@param options [Hash] Config for distribution.

REQUIRED:
* S3Origin [Hash]:
  * DNSName [String] Origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'.
  * OriginAccessIdentity [String] Optional: used when serving private content.
or
* CustomOrigin [Hash]:
  * DNSName [String] Origin to associate with distribution, ie 'www.example.com'.
  * HTTPPort [Integer] Optional HTTP port of origin, in [80, 443] or (1024...65535), defaults to 80.
  * HTTPSPort [Integer] Optional HTTPS port of origin, in [80, 443] or (1024...65535), defaults to 443.
  * OriginProtocolPolicy [String] Policy on using http vs https, in ['http-only', 'match-viewer'].
OPTIONAL:
* CallerReference [String] Used to prevent replay, defaults to Time.now.to_i.to_s.
* Comment [String] Optional comment about distribution.
* CNAME [Array] Optional array of strings to set as CNAMEs.
* DefaultRootObject [String] Optional default object to return for '/'.
* Enabled [Boolean] Whether or not distribution should accept requests, defaults to true.
* Logging [Hash]: Optional logging config.
  * Bucket [String] Bucket to store logs in, ie 'mylogs.s3.amazonaws.com'.
  * Prefix [String] Optional prefix for log filenames, ie 'myprefix/'.
* OriginAccessIdentity [String] Used for serving private content, in format 'origin-access-identity/cloudfront/ID'.
* RequiredProtocols [String] Optional, set to 'https' to force https connections.
* TrustedSigners [Array] Optional grant of rights to up to 5 aws accounts to generate signed URLs for private content, elements are either 'Self' for your own account or an AWS Account Number.

@return [Excon::Response]

* body [Hash]:
  * DomainName [String] - Domain name of distribution.
  * Id [String] - Id of distribution.
  * LastModifiedTime [String] - Timestamp of last modification of distribution.
  * Status [String] - Status of distribution.
  * DistributionConfig [Array]:
    * CallerReference [String] - Used to prevent replay, defaults to Time.now.to_i.to_s.
    * CNAME [Array] - Array of associated cnames.
    * Comment [String] - Comment associated with distribution.
    * Enabled [Boolean] - Whether or not distribution is enabled.
    * Logging [Hash]:
      * Bucket [String] - Bucket logs are stored in.
      * Prefix [String] - Prefix logs are stored with.
    * Origin [String] - S3 origin bucket.
    * TrustedSigners [Array] - Trusted signers.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/CreateDistribution.html

# File lib/fog/aws/requests/cdn/post_distribution.rb, line 53
def post_distribution(options = {})
  options['CallerReference'] = Time.now.to_i.to_s
  data = '<?xml version="1.0" encoding="UTF-8"?>'
  data << "<DistributionConfig xmlns=\"http://cloudfront.amazonaws.com/doc/#{@version}/\">"
  for key, value in options
    case value
    when Array
      for item in value
        data << "<#{key}>#{item}</#{key}>"
      end
    when Hash
      data << "<#{key}>"
      for inner_key, inner_value in value
        data << "<#{inner_key}>#{inner_value}</#{inner_key}>"
      end
      data << "</#{key}>"
    else
      data << "<#{key}>#{value}</#{key}>"
    end
  end
  data << "</DistributionConfig>"
  request({
    :body       => data,
    :expects    => 201,
    :headers    => { 'Content-Type' => 'text/xml' },
    :idempotent => true,
    :method     => 'POST',
    :parser     => Fog::Parsers::AWS::CDN::Distribution.new,
    :path       => "/distribution"
  })
end
post_invalidation(distribution_id, paths, caller_reference = Time.now.to_i.to_s) click to toggle source

List information about distributions in CloudFront.

@param distribution_id [String] Id of distribution for invalidations. @param paths [Array] Array of string paths to objects to invalidate. @param caller_reference [String] Used to prevent replay, defaults to Time.now.to_i.to_s.

@return [Excon::Response]

* body [Hash]:
  * Id [String] - Id of invalidation.
  * Status [String] - Status of invalidation.
  * CreateTime [Integer] - Time of invalidation creation.
  * InvalidationBatch [Array]:
    * Path [Array] - Array of strings of objects to invalidate.
    * CallerReference [String] - Used to prevent replay, defaults to Time.now.to_i.to_s.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/CreateInvalidation.html

# File lib/fog/aws/requests/cdn/post_invalidation.rb, line 24
def post_invalidation(distribution_id, paths, caller_reference = Time.now.to_i.to_s)
  body = '<?xml version="1.0" encoding="UTF-8"?>'
  body << "<InvalidationBatch>"
  for path in [*paths]
    body << "<Path>" << path << "</Path>"
  end
  body << "<CallerReference>" << caller_reference << "</CallerReference>"
  body << "</InvalidationBatch>"
  request({
    :body       => body,
    :expects    => 201,
    :headers    => {'Content-Type' => 'text/xml'},
    :idempotent => true,
    :method     => 'POST',
    :parser     => Fog::Parsers::AWS::CDN::PostInvalidation.new,
    :path       => "/distribution/#{distribution_id}/invalidation"
  })
end
post_streaming_distribution(options = {}) click to toggle source

Create a new streaming distribution in CloudFront.

@param options [Hash] Config for distribution.

REQUIRED:
* S3Origin [Hash]:
  * DNSName [String] Origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'.
OPTIONAL:
* CallerReference [String] Used to prevent replay, defaults to Time.now.to_i.to_s.
* Comment [String] Optional comment about distribution.
* CNAME [Array] Optional array of strings to set as CNAMEs.
* Enabled [Boolean] Whether or not distribution should accept requests, defaults to true.
* Logging [Hash]: Optional logging config.
  * Bucket [String] Bucket to store logs in, ie 'mylogs.s3.amazonaws.com'.
  * Prefix [String] Optional prefix for log filenames, ie 'myprefix/'.

@return [Excon::Response]

* body[Hash]:
  * Id [String] - Id of distribution.
  * Status'[String] - Status of distribution.
  * LastModifiedTime [String] - Timestamp of last modification of distribution.
  * DomainName [String] - Domain name of distribution.
  * StreamingDistributionConfig [Array]:
    * CallerReference [String] - Used to prevent replay, defaults to Time.now.to_i.to_s.
    * CNAME [Array] - Array of associated cnames.
    * Comment [String] - Comment associated with distribution.
    * Enabled [Boolean] - Whether or not distribution is enabled.
    * Logging [Hash]:
      * Bucket [String] - Bucket logs are stored in.
      * Prefix [String] - Prefix logs are stored with.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/CreateStreamingDistribution.html

# File lib/fog/aws/requests/cdn/post_streaming_distribution.rb, line 40
def post_streaming_distribution(options = {})
  options['CallerReference'] = Time.now.to_i.to_s
  data = '<?xml version="1.0" encoding="UTF-8"?>'
  data << "<StreamingDistributionConfig xmlns=\"http://cloudfront.amazonaws.com/doc/#{@version}/\">"
  for key, value in options
    case value
    when Array
      for item in value
        data << "<#{key}>#{item}</#{key}>"
      end
    when Hash
      data << "<#{key}>"
      for inner_key, inner_value in value
        data << "<#{inner_key}>#{inner_value}</#{inner_key}>"
      end
      data << "</#{key}>"
    else
      data << "<#{key}>#{value}</#{key}>"
    end
  end
  data << "</StreamingDistributionConfig>"
  request({
    :body       => data,
    :expects    => 201,
    :headers    => { 'Content-Type' => 'text/xml' },
    :idempotent => true,
    :method     => 'POST',
    :parser     => Fog::Parsers::AWS::CDN::StreamingDistribution.new,
    :path       => "/streaming-distribution"
  })
end
put_distribution_config(distribution_id, etag, options = {}) click to toggle source

Update a distribution in CloudFront.

@param distribution_id [String] Id of distribution to update config for. @param options [Hash] Config for distribution.

REQUIRED:
* S3Origin [Hash]:
  * DNSName [String] - origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'.
  * OriginAccessIdentity [String] - Optional: Used when serving private content.
or
* CustomOrigin [Hash]:
  * DNSName [String] - Origin to associate with distribution, ie 'www.example.com'.
  * HTTPPort [Integer] - HTTP port of origin, in [80, 443] or (1024...65535).
  * HTTPSPort [Integer] - HTTPS port of origin, in [80, 443] or (1024...65535).
  * OriginProtocolPolicy [String] - Policy on using http vs https, in ['http-only', 'match-viewer'].
OPTIONAL:
* CallerReference [String] Used to prevent replay, defaults to Time.now.to_i.to_s.
* Comment [String] Optional comment about distribution.
* CNAME [Array] Optional array of strings to set as CNAMEs.
* DefaultRootObject [String] Optional default object to return for '/'.
* Enabled [Boolean] Whether or not distribution should accept requests, defaults to true.
* Logging [Hash]: Optional logging config.
  * Bucket [String] Bucket to store logs in, ie 'mylogs.s3.amazonaws.com'.
  * Prefix [String] Optional prefix for log filenames, ie 'myprefix/'.
* OriginAccessIdentity [String] Used for serving private content, in format 'origin-access-identity/cloudfront/ID'.
* RequiredProtocols [String] Optional, set to 'https' to force https connections.
* TrustedSigners [Array] Optional grant of rights to up to 5 aws accounts to generate signed URLs for private content, elements are either 'Self' for your own account or an AWS Account Number.

@return [Excon::Response]

* body [Hash]:
  * DomainName [String]: Domain name of distribution.
  * Id [String] - Id of distribution.
  * LastModifiedTime [String] - Timestamp of last modification of distribution.
  * Status [String] - Status of distribution.
  * DistributionConfig [Array]:
    * CallerReference [String] - Used to prevent replay, defaults to Time.now.to_i.to_s.
    * CNAME [Array] - Array of associated cnames.
    * Comment [String] - Comment associated with distribution.
    * Enabled [Boolean] - Whether or not distribution is enabled.
    * Logging [Hash]:
      * Bucket [String] - Bucket logs are stored in.
      * Prefix [String] - Prefix logs are stored with.
    * Origin [String] - S3 origin bucket.
    * TrustedSigners [Array] - Trusted signers.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/CreateDistribution.html

# File lib/fog/aws/requests/cdn/put_distribution_config.rb, line 54
def put_distribution_config(distribution_id, etag, options = {})
  data = '<?xml version="1.0" encoding="UTF-8"?>'
  data << "<DistributionConfig xmlns=\"http://cloudfront.amazonaws.com/doc/#{@version}/\">"
  for key, value in options
    case value
    when Array
      for item in value
        data << "<#{key}>#{item}</#{key}>"
      end
    when Hash
      data << "<#{key}>"
      for inner_key, inner_value in value
        data << "<#{inner_key}>#{inner_value}</#{inner_key}>"
      end
      data << "</#{key}>"
    else
      data << "<#{key}>#{value}</#{key}>"
    end
  end
  data << "</DistributionConfig>"
  request({
    :body       => data,
    :expects    => 200,
    :headers    => {
      'Content-Type'  => 'text/xml',
      'If-Match'      => etag
    },
    :idempotent => true,
    :method     => 'PUT',
    :parser     => Fog::Parsers::AWS::CDN::Distribution.new,
    :path       => "/distribution/#{distribution_id}/config"
  })
end
put_streaming_distribution_config(distribution_id, etag, options = {}) click to toggle source

Update a streaming distribution in CloudFront.

@param distribution_id [String] - Id of distribution to update config for. @param options [Hash] - Config for distribution.

REQUIRED:
* S3Origin [Hash]:
  * DNSName [String] Origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'.
OPTIONAL:

@option options CallerReference [String] Used to prevent replay, defaults to Time.now.to_i.to_s @option options Comment [String] Optional comment about distribution @option options CNAME [Array] Optional array of strings to set as CNAMEs @option options Enabled [Boolean] Whether or not distribution should accept requests, defaults to true @option options Logging [Hash]: Optional logging config

* Bucket [String] Bucket to store logs in, ie 'mylogs.s3.amazonaws.com'
* Prefix String] Optional prefix for log filenames, ie 'myprefix/'

@return [Excon::Response]

* body [Hash]:
  * DomainName [String] - Domain name of distribution.
  * Id [String] - Id of distribution.
  * LastModifiedTime [String] - Timestamp of last modification of distribution.
  * Status [String] - Status of distribution.
  * StreamingDistributionConfig [Array]:
    * CallerReference [String] - Used to prevent replay, defaults to Time.now.to_i.to_s.
    * CNAME [Array] - Array of associated cnames.
    * Comment [String] - Comment associated with distribution.
    * Enabled [Boolean] - Whether or not distribution is enabled.
    * Logging [Hash]:
      * Bucket [String] - Bucket logs are stored in.
      * Prefix [String] - Prefix logs are stored with.
    * Origin [String] - S3 origin bucket.
    * TrustedSigners [Array] - Trusted signers.

@see docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/PutStreamingDistribution.html

# File lib/fog/aws/requests/cdn/put_streaming_distribution_config.rb, line 43
def put_streaming_distribution_config(distribution_id, etag, options = {})
  data = '<?xml version="1.0" encoding="UTF-8"?>'
  data << "<StreamingDistributionConfig xmlns=\"http://cloudfront.amazonaws.com/doc/#{@version}/\">"
  for key, value in options
    case value
    when Array
      for item in value
        data << "<#{key}>#{item}</#{key}>"
      end
    when Hash
      data << "<#{key}>"
      for inner_key, inner_value in value
        data << "<#{inner_key}>#{inner_value}</#{inner_key}>"
      end
      data << "</#{key}>"
    else
      data << "<#{key}>#{value}</#{key}>"
    end
  end
  data << "</StreamingDistributionConfig>"
  request({
    :body       => data,
    :expects    => 200,
    :headers    => {
      'Content-Type'  => 'text/xml',
      'If-Match'      => etag
    },
    :idempotent => true,
    :method     => 'PUT',
    :parser     => Fog::Parsers::AWS::CDN::StreamingDistribution.new,
    :path       => "/streaming-distribution/#{distribution_id}/config"
  })
end
reload() click to toggle source
# File lib/fog/aws/cdn.rb, line 158
def reload
  @connection.reset
end

Private Instance Methods

_request(params, &block) click to toggle source
# File lib/fog/aws/cdn.rb, line 191
def _request(params, &block)
  @connection.request(params, &block)
end
request(params, &block) click to toggle source
# File lib/fog/aws/cdn.rb, line 173
def request(params, &block)
  refresh_credentials_if_expired

  params[:headers] ||= {}
  params[:headers]['Date'] = Fog::Time.now.to_date_header
  params[:headers]['x-amz-security-token'] = @aws_session_token if @aws_session_token
  params[:headers]['Authorization'] = "AWS #{@aws_access_key_id}:#{signature(params)}"
  params[:path] = "/#{@version}/#{params[:path]}"

  if @instrumentor
    @instrumentor.instrument("#{@instrumentor_name}.request", params) do
      _request(params, &block)
    end
  else
    _request(params, &block)
  end
end
setup_credentials(options) click to toggle source
# File lib/fog/aws/cdn.rb, line 164
def setup_credentials(options)
  @aws_access_key_id     = options[:aws_access_key_id]
  @aws_secret_access_key = options[:aws_secret_access_key]
  @aws_session_token     = options[:aws_session_token]
  @aws_credentials_expire_at = options[:aws_credentials_expire_at]

  @hmac       = Fog::HMAC.new('sha1', @aws_secret_access_key)
end
signature(params) click to toggle source
# File lib/fog/aws/cdn.rb, line 195
def signature(params)
  string_to_sign = params[:headers]['Date']
  signed_string = @hmac.sign(string_to_sign)
  Base64.encode64(signed_string).chomp!
end