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/parsers/storage/get_bucket.rb
Vadim Baryshev 6bcc351063 Fix for empty ETag values
Fog aws fails if API response contains empty ETag tags. It may cause when working with S3 clones (like minio in my case), that not provides ETags in their API answer.
2016-06-12 20:36:07 +04:00

58 lines
1.7 KiB
Ruby

module Fog
module Parsers
module Storage
module AWS
class GetBucket < Fog::Parsers::Base
def reset
@object = { 'Owner' => {} }
@response = { 'Contents' => [], 'CommonPrefixes' => [] }
end
def start_element(name, attrs = [])
super
case name
when 'CommonPrefixes'
@in_common_prefixes = true
end
end
def end_element(name)
case name
when 'CommonPrefixes'
@in_common_prefixes = false
when 'Contents'
@response['Contents'] << @object
@object = { 'Owner' => {} }
when 'DisplayName', 'ID'
@object['Owner'][name] = value
when 'ETag'
@object[name] = value.gsub('"', '') if value != nil
when 'IsTruncated'
if value == 'true'
@response['IsTruncated'] = true
else
@response['IsTruncated'] = false
end
when 'LastModified'
@object['LastModified'] = Time.parse(value)
when 'Marker', 'Name'
@response[name] = value
when 'MaxKeys'
@response['MaxKeys'] = value.to_i
when 'Prefix'
if @in_common_prefixes
@response['CommonPrefixes'] << value
else
@response[name] = value
end
when 'Size'
@object['Size'] = value.to_i
when 'Delimiter', 'Key', 'StorageClass'
@object[name] = value
end
end
end
end
end
end
end