Class: Amazon::DatadiveImportParser
- Inherits:
-
Object
- Object
- Amazon::DatadiveImportParser
- Defined in:
- app/services/amazon/datadive_import_parser.rb
Overview
Parses DataDive flat file export format (TSV) for Amazon listings
Expected format:
Row 1: Human-readable headers (Title, Key Product Features, etc.)
Row 2: Field names (item_name, bullet_point1, etc.)
Row 3+: Values
Field mapping:
- item_name -> Title
- bullet_point1-10 -> Feature 1-10 (compacted, blanks removed)
- product_description -> Description
- generic_keyword -> Generic Keyword
Defined Under Namespace
Classes: Result
Constant Summary collapse
- FIELD_MAPPING =
{ 'item_name' => :title, 'product_description' => :description, 'generic_keyword' => :generic_keyword }.freeze
Instance Method Summary collapse
Instance Method Details
#parse(raw_text) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/services/amazon/datadive_import_parser.rb', line 30 def parse(raw_text) return Result.new(success: false, error: 'No data provided') if raw_text.blank? # Parse all rows handling multiline quoted fields rows = parse_all_rows(raw_text.strip) return Result.new(success: false, error: 'Invalid format: needs at least 3 rows (headers, field names, values)') if rows.size < 3 field_names = rows[1] values = rows[2] parse_error = validate_parsed_rows(field_names, values) return parse_error if parse_error data = extract_data(field_names, values) Result.new(success: true, data: data) rescue StandardError => e Result.new(success: false, error: "Parse error: #{e.}") end |
#validate_parsed_rows(field_names, values) ⇒ Object
49 50 51 52 53 54 |
# File 'app/services/amazon/datadive_import_parser.rb', line 49 def validate_parsed_rows(field_names, values) return Result.new(success: false, error: 'Field names row is empty') if field_names.empty? return Result.new(success: false, error: 'Values row is empty') if values.empty? nil end |