class Fulfillment::Shipment

Attributes

client[RW]

Public Class Methods

add(client, order_public_id, shipment_public_id, shipment_items_array) click to toggle source
# File lib/fulfillment/shipment.rb, line 25
def add(client, order_public_id, shipment_public_id, shipment_items_array)
  shipment_payload = { "fulfillment_order_items" => shipment_items_array }
  curl = Curl::Easy.http_put(client.build_auth_url("/orders/#{order_public_id}/shipments/#{shipment_public_id}/add"), shipment_payload.to_json) do |curl|
    client.configure_http(curl)
  end

  raise Fulfillment::ClientException.new("Could not add shipment information about shipment #{shipment_public_id} to order #{order_public_id}:\n\n Response Body:\n #{curl.body_str}") unless curl.response_code == 200

  new(client, JSON.parse(curl.body_str))
end
close(client, order_public_id, shipment_public_id) click to toggle source
# File lib/fulfillment/shipment.rb, line 88
def close(client, order_public_id, shipment_public_id)
  curl = Curl::Easy.http_put(client.build_auth_url("/orders/#{order_public_id}/shipments/#{shipment_public_id}/close"), {}.to_json) do |curl|
    client.configure_http(curl)
  end

  raise Fulfillment::ClientException.new("Could not close shipment #{shipment_public_id} for order #{order_public_id}:\n\n Response Body:\n #{curl.body_str}") unless curl.response_code == 200

  new(client, JSON.parse(curl.body_str))
end
create(client, order_public_id, shipment_hash) click to toggle source
# File lib/fulfillment/shipment.rb, line 36
def create(client, order_public_id, shipment_hash)
  curl = Curl::Easy.http_post(client.build_auth_url("/orders/#{order_public_id}/shipments"), shipment_hash.to_json) do |curl|
    client.configure_http(curl)
  end

  raise Fulfillment::CreationException.new("Could not create shipment for order #{order_public_id}:\n\n Response Body:\n #{curl.body_str}") unless curl.response_code == 201

  new(client, JSON.parse(curl.body_str))
end
list(client, first_page_num = 1) click to toggle source
# File lib/fulfillment/shipment.rb, line 72
def list(client, first_page_num = 1)
  Fulfillment::PagedResult.construct(first_page_num) do |page_num|
    curl = Curl::Easy.http_get(client.build_auth_url("/shipments")) do |curl|
      client.configure_http(curl)
      client.set_request_page(curl, page_num)
    end
  
    raise Fulfillment::ClientException.new("Could not get index of shipments:\n\n Response Body:\n #{curl.body_str}") unless curl.response_code == 200
  
    shipment_hashes = JSON.parse(curl.body_str)
    result = shipment_hashes.map { |sh| new(client, sh) }
    
    Fulfillment::PagingEnvelope.envelop(curl, result)
  end  
end
new(client, data) click to toggle source
# File lib/fulfillment/shipment.rb, line 6
def initialize(client, data)
  @client = client
  make_getter_methods(data)
end
shipment_items(client, shipment_public_id, first_page_num = 1) click to toggle source
# File lib/fulfillment/shipment.rb, line 46
def shipment_items(client, shipment_public_id, first_page_num = 1)
  Fulfillment::PagedResult.construct(first_page_num) do |page_num|
    curl = Curl::Easy.http_get(client.build_auth_url("/shipments/#{shipment_public_id}/items")) do |curl|
      client.configure_http(curl)
      client.set_request_page(curl, page_num)
    end

    raise Fulfillment::ClientException.new("Could not load index of items for shipment #{shipment_public_id}: \n\n Response Body:\n #{curl.body_str}") unless curl.response_code == 200

    shipment_items_hashes = JSON.parse(curl.body_str)
    result = shipment_items_hashes.map { |sh| Fulfillment::ShipmentItem.new(client, sh) }

    Fulfillment::PagingEnvelope.envelop(curl, result)
  end
end
show(client, shipment_public_id) click to toggle source
# File lib/fulfillment/shipment.rb, line 62
def show(client, shipment_public_id)
  curl = Curl::Easy.http_get(client.build_auth_url("/shipments/#{shipment_public_id}")) do |curl|
    client.configure_http(curl)
  end

  raise Fulfillment::ClientException.new("Could not get shipment #{shipment_public_id}:\n\n Response Body:\n #{curl.body_str}") unless curl.response_code == 200

  new(client, JSON.parse(curl.body_str))
end

Public Instance Methods

add(shipment_items_array) click to toggle source
# File lib/fulfillment/shipment.rb, line 15
def add(shipment_items_array)
  Fulfillment::Shipment.add(self.client, self.fulfillment_order['id'], self.public_id, shipment_items_array)
end
close() click to toggle source
# File lib/fulfillment/shipment.rb, line 19
def close
  Fulfillment::Shipment.close(self.client, self.fulfillment_order['id'], self.public_id)
end
shipment_items(first_page_num = 1) click to toggle source
# File lib/fulfillment/shipment.rb, line 11
def shipment_items(first_page_num = 1)
  Fulfillment::Shipment.shipment_items(self.client, self.public_id, first_page_num)
end