Class: Fog::AWS::SimpleDB

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/aws/simpledb.rb,
lib/fog/aws/requests/simpledb/select.rb,
lib/fog/aws/requests/simpledb/list_domains.rb,
lib/fog/aws/requests/simpledb/list_domains.rb,
lib/fog/aws/requests/simpledb/create_domain.rb,
lib/fog/aws/requests/simpledb/create_domain.rb,
lib/fog/aws/requests/simpledb/delete_domain.rb,
lib/fog/aws/requests/simpledb/delete_domain.rb,
lib/fog/aws/requests/simpledb/get_attributes.rb,
lib/fog/aws/requests/simpledb/get_attributes.rb,
lib/fog/aws/requests/simpledb/put_attributes.rb,
lib/fog/aws/requests/simpledb/domain_metadata.rb,
lib/fog/aws/requests/simpledb/domain_metadata.rb,
lib/fog/aws/requests/simpledb/delete_attributes.rb,
lib/fog/aws/requests/simpledb/delete_attributes.rb,
lib/fog/aws/requests/simpledb/batch_put_attributes.rb,
lib/fog/aws/requests/simpledb/batch_put_attributes.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ SimpleDB

Initialize connection to SimpleDB

Notes

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

Examples

sdb = SimpleDB.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

  • SimpleDB object with connection to aws.



53
54
55
56
57
58
59
60
61
62
# File 'lib/fog/aws/simpledb.rb', line 53

def initialize(options={})
  @aws_access_key_id      = options[:aws_access_key_id]
  @aws_secret_access_key  = options[:aws_secret_access_key]
  @hmac       = HMAC::SHA256.new(@aws_secret_access_key)
  @host       = options[:host]      || 'sdb.amazonaws.com'
  @nil_string = options[:nil_string]|| 'nil'
  @port       = options[:port]      || 443
  @scheme     = options[:scheme]    || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
end

Class Method Details

.dataObject



9
10
11
# File 'lib/fog/aws/simpledb.rb', line 9

def self.data
  @data
end

.reloadObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/fog/aws/simpledb.rb', line 14

def self.reload
  load "fog/aws/parsers/simpledb/basic.rb"
  load "fog/aws/parsers/simpledb/domain_metadata.rb"
  load "fog/aws/parsers/simpledb/get_attributes.rb"
  load "fog/aws/parsers/simpledb/list_domains.rb"
  load "fog/aws/parsers/simpledb/select.rb"

  load "fog/aws/requests/simpledb/batch_put_attributes.rb"
  load "fog/aws/requests/simpledb/create_domain.rb"
  load "fog/aws/requests/simpledb/delete_attributes.rb"
  load "fog/aws/requests/simpledb/delete_domain.rb"
  load "fog/aws/requests/simpledb/domain_metadata.rb"
  load "fog/aws/requests/simpledb/get_attributes.rb"
  load "fog/aws/requests/simpledb/list_domains.rb"
  load "fog/aws/requests/simpledb/put_attributes.rb"
  load "fog/aws/requests/simpledb/select.rb"

  if Fog.mocking?
    reset_data
  end
end

.reset_dataObject



6
7
8
# File 'lib/fog/aws/simpledb.rb', line 6

def self.reset_data
  @data = { :domains => {} }
end

Instance Method Details

#batch_put_attributes(domain_name, items, replace_attributes = Hash.new([])) ⇒ Object

Put items attributes into a 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 ‘.’.

  • items<~Hash> - Keys are the items names and 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. Values are the attributes to add to the given item and 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.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘BoxUsage’

      • ‘RequestId’



24
25
26
27
28
29
# File 'lib/fog/aws/requests/simpledb/batch_put_attributes.rb', line 24

def batch_put_attributes(domain_name, items, replace_attributes = Hash.new([]))
  request({
    'Action' => 'BatchPutAttributes',
    'DomainName' => domain_name
  }.merge!(encode_batch_attributes(items, replace_attributes)), Fog::Parsers::AWS::SimpleDB::Basic.new(@nil_string))
end

#create_domain(domain_name) ⇒ Object

Create a 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 ‘.’.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘BoxUsage’

      • ‘RequestId’



18
19
20
21
22
23
# File 'lib/fog/aws/requests/simpledb/create_domain.rb', line 18

def create_domain(domain_name)
  request({
    'Action' => 'CreateDomain',
    'DomainName' => domain_name
  }, Fog::Parsers::AWS::SimpleDB::Basic.new(@nil_string))
end

#delete_attributes(domain_name, item_name, attributes = nil) ⇒ Object

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.

  • attributes<~Hash> - Name/value pairs to remove from the item. Defaults to nil, which will delete the entire item. 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.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘BoxUsage’

      • ‘RequestId’



26
27
28
29
30
31
32
# File 'lib/fog/aws/requests/simpledb/delete_attributes.rb', line 26

def delete_attributes(domain_name, item_name, attributes = nil)
  request({
    'Action' => 'DeleteAttributes',
    'DomainName' => domain_name,
    'ItemName' => item_name
  }.merge!(encode_attributes(attributes)), Fog::Parsers::AWS::SimpleDB::Basic.new(@nil_string))
end

#delete_domain(domain_name) ⇒ Object

Delete a 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 ‘.’.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘BoxUsage’

      • ‘RequestId’



18
19
20
21
22
23
# File 'lib/fog/aws/requests/simpledb/delete_domain.rb', line 18

def delete_domain(domain_name)
  request({
    'Action' => 'DeleteDomain',
    'DomainName' => domain_name
  }, Fog::Parsers::AWS::SimpleDB::Basic.new(@nil_string))
end

#domain_metadata(domain_name) ⇒ Object

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 ‘.’.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘AttributeNameCount’ - number of unique attribute names in domain

      • ‘AttributeNamesSizeBytes’ - total size of unique attribute names, in bytes

      • ‘AttributeValueCount’ - number of all name/value pairs in domain

      • ‘AttributeValuesSizeBytes’ - total size of attributes, in bytes

      • ‘BoxUsage’

      • ‘ItemCount’ - number of items in domain

      • ‘ItemNameSizeBytes’ - total size of item names in domain, in bytes

      • ‘RequestId’

      • ‘Timestamp’ - last update time for metadata.



25
26
27
28
29
30
# File 'lib/fog/aws/requests/simpledb/domain_metadata.rb', line 25

def (domain_name)
  request({
    'Action' => 'DomainMetadata',
    'DomainName' => domain_name
  }, Fog::Parsers::AWS::SimpleDB::DomainMetadata.new(@nil_string))
end

#get_attributes(domain_name, item_name, attributes = nil) ⇒ Object

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.

  • attributes<~Array> - Attributes to return from the item. Defaults to nil, 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.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘Attributes’ - list of attribute name/values for the item

      • ‘BoxUsage’

      • ‘RequestId’



27
28
29
30
31
32
33
# File 'lib/fog/aws/requests/simpledb/get_attributes.rb', line 27

def get_attributes(domain_name, item_name, attributes = nil)
  request({
    'Action' => 'GetAttributes',
    'DomainName' => domain_name,
    'ItemName' => item_name,
  }.merge!(encode_attribute_names(attributes)), Fog::Parsers::AWS::SimpleDB::GetAttributes.new(@nil_string))
end

#list_domains(options = {}) ⇒ Object

List SimpleDB domains

Parameters

  • options<~Hash> - options, defaults to {}

    • ‘MaxNumberOfDomains’<~Integer> - number of domains to return between 1 and 100, defaults to 100

    • ‘NextToken’<~String> - Offset token to start listing, defaults to nil

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘BoxUsage’

      • ‘Domains’ - array of domain names.

      • ‘NextToken’ - offset to start with if there are are more domains to list

      • ‘RequestId’



22
23
24
25
26
# File 'lib/fog/aws/requests/simpledb/list_domains.rb', line 22

def list_domains(options = {})
  request({
    'Action' => 'ListDomains'
  }.merge!(options), Fog::Parsers::AWS::SimpleDB::ListDomains.new(@nil_string))
end

#put_attributes(domain_name, item_name, attributes, replace_attributes = []) ⇒ Object

Put item attributes into a 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.

  • attributes<~Hash> - Name/value pairs to add to the item. 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.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘BoxUsage’

      • ‘RequestId’



25
26
27
# File 'lib/fog/aws/requests/simpledb/put_attributes.rb', line 25

def put_attributes(domain_name, item_name, attributes, replace_attributes = [])
  batch_put_attributes(domain_name, { item_name => attributes }, { item_name => replace_attributes })
end

#select(select_expression, next_token = nil) ⇒ Object

Select item data from SimpleDB

Parameters

  • select_expression<~String> - Expression to query domain with.

  • next_token<~String> - Offset token to start list, defaults to nil.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘BoxUsage’<~Float>

      • ‘RequestId’<~String>

      • ‘Items’<~Hash> - list of attribute name/values for the items formatted as { ‘item_name’ => { ‘attribute_name’ => [‘attribute_value’] }}

      • ‘NextToken’<~String> - offset to start with if there are are more domains to list



19
20
21
22
23
24
25
# File 'lib/fog/aws/requests/simpledb/select.rb', line 19

def select(select_expression, next_token = nil)
  request({
    'Action' => 'Select',
    'NextToken' => next_token,
    'SelectExpression' => select_expression
  }, Fog::Parsers::AWS::SimpleDB::Select.new(@nil_string))
end