class Newgistics::Requests::UpdateShipmentContents

Attributes

response_handler[R]
shipment_update[R]

Public Class Methods

new(shipment_update, response_handler: nil) click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 6
def initialize(shipment_update, response_handler: nil)
  @shipment_update = shipment_update
  @response_handler = response_handler || default_response_handler
end

Public Instance Methods

body() click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 15
def body
  xml_builder.to_xml
end
path() click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 11
def path
  '/update_shipment_contents.aspx'
end
perform() click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 19
def perform
  Newgistics.api.post(self, response_handler)
end

Private Instance Methods

add_items_xml(items, xml) click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 54
def add_items_xml(items, xml)
  xml.AddItems do
    items.each { |item| item_xml(item, xml) }
  end
end
api_key() click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 42
def api_key
  Newgistics.configuration.api_key
end
default_response_handler() click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 25
def default_response_handler
  ResponseHandlers::UpdateShipmentContents.new(shipment_update)
end
item_xml(item, xml) click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 66
def item_xml(item, xml)
  xml.Item do
    xml.SKU item.sku
    xml.Qty item.qty
  end
end
remove_items_xml(items, xml) click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 60
def remove_items_xml(items, xml)
  xml.RemoveItems do
    items.each { |item| item_xml(item, xml) }
  end
end
shipment_update_attributes() click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 46
def shipment_update_attributes
  {
    apiKey: api_key,
    id: shipment_update.id,
    orderID: shipment_update.order_id
  }.reject { |_k, v| v.nil? || v.empty? }
end
shipment_update_xml(xml) click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 35
def shipment_update_xml(xml)
  xml.Shipment(shipment_update_attributes) do
    add_items_xml(shipment_update.add_items, xml)
    remove_items_xml(shipment_update.remove_items, xml)
  end
end
xml_builder() click to toggle source
# File lib/newgistics/requests/update_shipment_contents.rb, line 29
def xml_builder
  Nokogiri::XML::Builder.new do |xml|
    shipment_update_xml(xml)
  end
end