Sha256: ce81214066f977d40f411142970c532df4d94ba1086b9e2a4f7b99753026cf2f

Contents?: true

Size: 1.06 KB

Versions: 163

Compression:

Stored size: 1.06 KB

Contents

module Aws
  module Stubbing
    class DataApplicator

      include Seahorse::Model::Shapes

      # @param [Seahorse::Models::Shapes::ShapeRef] rules
      def initialize(rules)
        @rules = rules
      end

      # @param [Hash] data
      # @param [Structure] stub
      def apply_data(data, stub)
        apply_data_to_struct(@rules, data, stub)
      end

      private

      def apply_data_to_struct(ref, data, struct)
        data.each do |key, value|
          struct[key] = member_value(ref.shape.member(key), value)
        end
        struct
      end

      def member_value(ref, value)
        case ref.shape
        when StructureShape
          apply_data_to_struct(ref, value, ref.shape.struct_class.new)
        when ListShape
          value.inject([]) do |list, v|
            list << member_value(ref.shape.member, v)
          end
        when MapShape
          value.inject({}) do |map, (k,v)|
            map[k.to_s] = member_value(ref.shape.value, v)
            map
          end
        else
          value
        end
      end
    end
  end
end

Version data entries

163 entries across 163 versions & 1 rubygems

Version Path
aws-sdk-core-3.100.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.99.2 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.99.1 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.99.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.98.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.97.1 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.97.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.96.1 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.96.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.95.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.94.1 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.94.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.93.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.92.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.91.1 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.91.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.90.1 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.90.0 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.89.1 lib/aws-sdk-core/stubbing/data_applicator.rb
aws-sdk-core-3.89.0 lib/aws-sdk-core/stubbing/data_applicator.rb