2010-03-14 23:11:43 -04:00
module Fog
module AWS
2010-09-03 04:11:45 -04:00
class SimpleDB
2010-03-14 23:11:43 -04:00
class Real
2009-09-08 22:57:53 -04:00
2010-06-12 18:31:17 -04:00
require 'fog/aws/parsers/simpledb/get_attributes'
2009-09-08 22:57:53 -04:00
# List metadata for SimpleDB domain
#
# ==== Parameters
# * domain_name<~String> - Name of domain. Must be between 3 and 255 of the
# following characters: a-z, A-Z, 0-9, '_', '-' and '.'.
# * item_name<~String> - Name of the item. May use any UTF-8 characters valid
# in xml. Control characters and sequences not allowed in xml are not
# valid. Can be up to 1024 bytes long.
2011-07-08 17:43:25 -04:00
# * options<~Hash>:
# * AttributeName<~Array> - Attributes to return from the item. Defaults to
# {}, which will return all attributes. Attribute names and values may use
# any UTF-8 characters valid in xml. Control characters and sequences not
# allowed in xml are not valid. Each name and value can be up to 1024
# bytes long.
# * ConsistentRead<~Boolean> - When set to true, ensures most recent data is returned. Defaults to false.
2009-09-08 22:57:53 -04:00
#
# ==== Returns
2009-11-02 21:48:49 -05:00
# * response<~Excon::Response>:
2009-09-08 22:57:53 -04:00
# * body<~Hash>:
# * 'Attributes' - list of attribute name/values for the item
# * 'BoxUsage'
# * 'RequestId'
2011-07-08 17:43:25 -04:00
def get_attributes ( domain_name , item_name , options = { } )
if options . is_a? ( Array )
2011-10-19 15:49:34 -04:00
Fog :: Logger . deprecation ( " get_attributes with array attributes param is deprecated, use 'AttributeName' => attributes) instead [light_black]( #{ caller . first } )[/] " )
2011-07-08 17:43:25 -04:00
options = { 'AttributeName' = > options }
end
options [ 'AttributeName' ] || = [ ]
2009-09-08 22:57:53 -04:00
request ( {
2011-07-08 17:43:25 -04:00
'Action' = > 'GetAttributes' ,
'ConsistentRead' = > ! ! options [ 'ConsistentRead' ] ,
'DomainName' = > domain_name ,
'ItemName' = > item_name ,
:idempotent = > true ,
:parser = > Fog :: Parsers :: AWS :: SimpleDB :: GetAttributes . new ( @nil_string )
} . merge! ( encode_attribute_names ( options [ 'AttributeName' ] ) ) )
2009-09-08 22:57:53 -04:00
end
2009-07-13 22:14:59 -04:00
end
2010-03-14 23:11:43 -04:00
class Mock
2009-09-08 22:57:53 -04:00
2011-07-08 17:43:25 -04:00
def get_attributes ( domain_name , item_name , options = { } )
2011-07-20 13:09:13 -04:00
if options . is_a? ( Array )
2011-10-19 15:49:34 -04:00
Fog :: Logger . deprecation ( " get_attributes with array attributes param is deprecated, use 'AttributeName' => attributes) instead [light_black]( #{ caller . first } )[/] " )
2011-07-10 01:12:35 -04:00
options [ 'AttributeName' ] || = options if options . is_a? ( Array )
2011-07-08 17:43:25 -04:00
end
2011-07-10 01:12:35 -04:00
options [ 'AttributeName' ] || = [ ]
2009-11-20 14:08:08 -05:00
response = Excon :: Response . new
2011-05-19 18:35:33 -04:00
if self . data [ :domains ] [ domain_name ]
2009-09-08 22:57:53 -04:00
object = { }
2011-07-10 01:12:35 -04:00
if ! options [ 'AttributeName' ] . empty?
2011-07-08 17:43:25 -04:00
for attribute in options [ 'AttributeName' ]
2011-07-11 16:50:33 -04:00
if self . data [ :domains ] [ domain_name ] . has_key? ( item_name ) && self . data [ :domains ] [ domain_name ] [ item_name ] . has_key? ( attribute )
2011-05-19 18:35:33 -04:00
object [ attribute ] = self . data [ :domains ] [ domain_name ] [ item_name ] [ attribute ]
2009-09-08 22:57:53 -04:00
end
end
2011-05-19 18:35:33 -04:00
elsif self . data [ :domains ] [ domain_name ] [ item_name ]
object = self . data [ :domains ] [ domain_name ] [ item_name ]
2009-09-08 22:57:53 -04:00
end
response . status = 200
response . body = {
'Attributes' = > object ,
'BoxUsage' = > Fog :: AWS :: Mock . box_usage ,
'RequestId' = > Fog :: AWS :: Mock . request_id
}
else
response . status = 400
2009-11-20 14:08:08 -05:00
raise ( Excon :: Errors . status_error ( { :expects = > 200 } , response ) )
2009-09-08 22:57:53 -04:00
end
response
end
end
2009-07-13 22:14:59 -04:00
end
end
end