Class: Edi::Amazon::JsonListingGenerator::Attributes::ItemDimensions

Inherits:
BaseAttribute
  • Object
show all
Defined in:
app/services/edi/amazon/json_listing_generator/attributes/item_dimensions.rb

Constant Summary

Constants inherited from BaseAttribute

BaseAttribute::RUBY_UNIT_TO_AMAZON_UNIT

Instance Attribute Summary

Attributes inherited from BaseAttribute

#amazon_schema, #attribute_name, #catalog_item, #enum_mapper, #fba, #item, #language_tag, #marketplace, #marketplace_country_iso, #marketplace_id, #value_attribute_name, #variation

Instance Method Summary collapse

Methods inherited from BaseAttribute

#fetch_unit, #fetch_value, #initialize, #map_unit, #value

Constructor Details

This class inherits a constructor from Edi::Amazon::JsonListingGenerator::Attributes::BaseAttribute

Instance Method Details

#buildObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'app/services/edi/amazon/json_listing_generator/attributes/item_dimensions.rb', line 3

def build
  target_unit = @marketplace_country_iso == 'US' ? 'in' : 'cm'
  mapped_unit = map_unit(target_unit)
  dims = [format_value(fetch_value(:height, output_unit: target_unit)), format_value(fetch_value(:length, output_unit: target_unit)) || format_value(fetch_value(:depth, output_unit: target_unit)), format_value(fetch_value(:width, output_unit: target_unit))].compact.sort.reverse

  dimensions = {
    length: { value: dims[0], unit: mapped_unit },
    width: { value: dims[1], unit: mapped_unit },
    height: { value: dims[2], unit: mapped_unit }
  }
  dimensions = dimensions.reject { |_, dim| dim[:value].nil? || dim[:unit].nil? }
  return if dimensions.blank?

  dimensions[:marketplace_id] = marketplace_id
  [dimensions]
end