1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
module Fog
module AWS
class CDN
class Real
require 'fog/aws/parsers/cdn/get_invalidation_list'
# 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 http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/ListInvalidation.html
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
end
class Mock
def get_invalidation_list(distribution_id, options = {})
distribution = self.data[:distributions][distribution_id]
unless distribution
Fog::AWS::CDN::Mock.error(:no_such_distribution)
end
invalidations = (self.data[:invalidations][distribution_id] || {}).values
invalidations.each do |invalidation|
if invalidation['Status'] == 'InProgress' && (Time.now - Time.parse(invalidation['CreateTime']) >= Fog::Mock.delay * 2)
invalidation['Status'] = 'Completed'
distribution['InProgressInvalidationBatches'] -= 1
end
end
response = Excon::Response.new
response.status = 200
response.body = {
'Marker' => Fog::Mock.random_hex(16),
'IsTruncated' => false,
'MaxItems' => 100,
'InvalidationSummary' => invalidations.map { |i| to_invalidation_summary(i) }
}
response
end
private
def to_invalidation_summary(d)
{
'Id' => d['Id'],
'Status' => d['Status']
}
end
end
end
end
end
|