1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/lib/fog/aws/models/cdn/invalidation.rb
2015-01-02 09:42:20 -08:00

60 lines
1.7 KiB
Ruby

require 'fog/core/model'
module Fog
module CDN
class AWS
class Invalidation < Fog::Model
identity :id, :aliases => 'Id'
attribute :status, :aliases => 'Status'
attribute :create_time, :aliases => 'CreateTime'
attribute :caller_reference, :aliases => 'CallerReference'
attribute :paths, :aliases => 'Paths'
def initialize(new_attributes={})
new_attributes[:caller_reference] ||= Time.now.utc.to_i.to_s
super(invalidation_to_attributes(new_attributes))
end
def distribution
@distribution
end
def ready?
requires :id, :status
status == 'Completed'
end
def save
requires :paths, :caller_reference
raise "Submitted invalidation cannot be submitted again" if persisted?
response = service.post_invalidation(distribution.identity, paths, caller_reference)
merge_attributes(invalidation_to_attributes(response.body))
true
end
def destroy
# invalidations can't be removed, but tests are requiring they do :)
true
end
private
def distribution=(dist)
@distribution = dist
end
def invalidation_to_attributes(new_attributes={})
invalidation_batch = new_attributes.delete('InvalidationBatch') || {}
if invalidation_batch['Path']
new_attributes[:paths] = invalidation_batch['Path']
end
if invalidation_batch['CallerReference']
new_attributes[:caller_reference] = invalidation_batch['CallerReference']
end
new_attributes
end
end
end
end
end