class MWS::API::Feeds::Envelope

Envelope

Public Class Methods

new(params = {}) click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 6
def initialize(params = {})
  if params[:type].to_s == 'text'
    @type = :text
    @envelope = params[:message]
  else
    @type = :xml
    @envelope = build_envelope(params)
  end
  validate! unless params[:skip_schema_validation] || @type == :text
end

Public Instance Methods

errors() click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 50
def errors
  @errors ||= xsd.validate(Nokogiri::XML(self))
end
md5() click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 25
def md5
  Digest::MD5.base64digest(self)
end
to_s() click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 33
def to_s
  if @type == :text
    result = @envelope
  else
    result = @envelope.target!
    result.gsub!('<Items type="array">', '')
    result.gsub!('</Items>', '')
    result.gsub!('<Inventories type="array">', '')
    result.gsub!('</Inventories>', '')
  end
  result
end
to_str() click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 29
def to_str
  to_s
end
valid?() click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 17
def valid?
  errors.count == 0
end
validate!() click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 21
def validate!
  fail "Invalid XML:\n" + errors.join("\n") unless valid?
end
xsd() click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 46
def xsd
  Nokogiri::XML::Schema(File.open(File.join(MWS::API::Feeds::XSD_PATH, 'amzn-envelope.xsd')))
end

Private Instance Methods

build_envelope(params = {}) click to toggle source

rubocop:disable all

# File lib/mws/api/feeds/envelope.rb, line 57
def build_envelope(params = {})
  xml = Builder::XmlMarkup.new
  xml.AmazonEnvelope do
    xml.Header do
      xml.DocumentVersion '1.01'
      xml.MerchantIdentifier params[:merchant_id]
    end
    xml.MessageType params[:message_type].to_s.camelize
    xml.PurgeAndReplace params[:purge_and_replace] || false
    messages_array(params).each { |message| xml << message_xml(message) }
  end; xml
end
get_array(parameter) click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 74
def get_array(parameter)
  [parameter].flatten.compact
end
message_xml(message) click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 78
def message_xml(message)
  message.to_xml(skip_instruct: true, root: 'Message')
end
messages_array(params) click to toggle source
# File lib/mws/api/feeds/envelope.rb, line 70
def messages_array(params)
  get_array(params[:message]) + get_array(params[:messages])
end