Sha256: d2b7f4149065991e4c82c61321787f02aa8175ea4108e9d4fbda9ef2caa15e6c

Contents?: true

Size: 901 Bytes

Versions: 3

Compression:

Stored size: 901 Bytes

Contents

require "cgi"
require "time"
require "money"
require "structure"
require "mws/orders/document"

module MWS
  module Orders
    class Entity < Document
      include Structure

      def float_at_xpath(path)
        text = text_at_xpath(path)
        text.to_f if text
      end

      def integer_at_xpath(path)
        text = text_at_xpath(path)
        text.to_i if text
      end

      def money_at_xpath(path)
        return unless amount = float_at_xpath("#{path}/Amount")

        currency_code = text_at_xpath("#{path}/CurrencyCode")
        amount = amount * 100 unless currency_code == "JPY"

        Money.new(amount, currency_code)
      end

      def time_at_xpath(path)
        text = text_at_xpath(path)
        Time.parse(CGI.unescape(text)) if text
      end

      def text_at_xpath(path)
        node = xpath(path).first
        node.text.strip if node
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mws-orders-0.2.1 lib/mws/orders/entity.rb
mws-orders-0.2.0 lib/mws/orders/entity.rb
mws-orders-0.1.1 lib/mws/orders/entity.rb