Sha256: fa1e1a06bb7a83db2ad15cc7d5fbc8c5711e1597000381a6edaa81020e080ad1

Contents?: true

Size: 603 Bytes

Versions: 3

Compression:

Stored size: 603 Bytes

Contents

# frozen_string_literal: true

require 'delegate'
require 'forwardable'
require 'multi_xml'

module Vacuum
  # A wrapper around the Amazon Product Advertising API response.
  class Response < SimpleDelegator
    extend Forwardable

    class << self
      attr_accessor :parser
    end

    def_delegator :to_h, :dig

    attr_writer :parser

    def parser
      @parser || self.class.parser
    end

    def parse
      parser ? parser.parse(body) : to_h
    end

    def to_h
      MultiXml.parse(body)
    end

    def body
      (+__getobj__.body).force_encoding(Encoding::UTF_8)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vacuum-2.2.0 lib/vacuum/response.rb
vacuum-2.1.1 lib/vacuum/response.rb
vacuum-2.1.0 lib/vacuum/response.rb