| Class | Amazon::AWS::MultipleOperation |
| In: |
lib/amazon/aws.rb
|
| Parent: | Operation |
This class can be used to merge operations into a single operation. AWS currently supports combining two operations,
This will allow you to take two Operation objects and combine them to form a single object, which can then be used to perform searches. AWS itself imposes the maximum of two combined operations.
operation1 and operation2 are both objects from a subclass of Operation, such as ItemSearch, ItemLookup, etc.
There are currently a few restrictions in the Ruby/AWS implementation of multiple operations:
Example:
is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B0013DZAYO',
'MerchantId' => 'Amazon' } )
mo = MultipleOperation.new( is, il )
In the above example, we compose a multiple operation consisting of an ItemSearch and an ItemLookup.
# File lib/amazon/aws.rb, line 682 def initialize(operation1, operation2) # Safeguard against changing original Operation objects in place. This # is to protect me, not for user code. # operation1.freeze operation2.freeze op_kind = '%s,%s' % [ operation1.kind, operation2.kind ] # Duplicate Operation objects and remove their Operation parameter. # op1 = operation1.dup op1.params = op1.params.dup op1.params.delete( 'Operation' ) op2 = operation2.dup op2.params = op2.params.dup op2.params.delete( 'Operation' ) if op1.class == op2.class # If both operations are of the same type, we combine the parameters # of both. # b_params = op1.batch_parameters( op1.params, op2.params ) else # We have to convert the parameters to batch format. # bp1 = op1.batch_parameters( op1.params, {} ) bp2 = op2.batch_parameters( op2.params, {} ) b_params = bp1.merge( bp2 ) end params = { 'Operation' => op_kind }.merge( b_params ) super( params ) end