Class: EasyPost::Services::Shipment
- Defined in:
- lib/easypost/services/shipment.rb
Constant Summary collapse
Instance Method Summary collapse
-
#all(params = {}) ⇒ Object
Retrieve a list of Shipments.
-
#buy(id, params = {}, end_shipper_id = nil) ⇒ Object
Buy a Shipment.
-
#create(params = {}) ⇒ Object
Create a Shipment.
-
#generate_form(id, form_type, form_options = {}) ⇒ Object
Generate a form for a Shipment.
-
#get_next_page(collection, page_size = nil) ⇒ Object
Get the next page of shipments.
-
#get_smart_rates(id) ⇒ Object
Get the SmartRates of a Shipment.
-
#insure(id, params = {}) ⇒ Object
Insure a Shipment.
-
#label(id, params = {}) ⇒ Object
Convert the label format of a Shipment.
-
#lowest_smart_rate(id, delivery_days, delivery_accuracy) ⇒ Object
Get the lowest SmartRate of a Shipment.
-
#recommend_ship_date(id, desired_delivery_date) ⇒ Object
Retrieve a recommended ship date for an existing Shipment via the Precision Shipping API, based on a specific desired delivery date.
-
#refund(id, params = {}) ⇒ Object
Refund a Shipment.
-
#regenerate_rates(id) ⇒ Object
Regenerate the rates of a Shipment.
-
#retrieve(id) ⇒ Object
Retrieve a Shipment.
-
#retrieve_estimated_delivery_date(id, planned_ship_date) ⇒ Object
Retrieves the estimated delivery date of each Rate via SmartRate.
Methods inherited from Service
Constructor Details
This class inherits a constructor from EasyPost::Services::Service
Instance Method Details
#all(params = {}) ⇒ Object
Retrieve a list of Shipments
24 25 26 27 28 29 30 31 32 |
# File 'lib/easypost/services/shipment.rb', line 24 def all(params = {}) filters = { key: 'shipments', purchased: params[:purchased], include_children: params[:include_children], } get_all_helper('shipments', MODEL_CLASS, params, filters) end |
#buy(id, params = {}, end_shipper_id = nil) ⇒ Object
Buy a Shipment.
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/easypost/services/shipment.rb', line 60 def buy(id, params = {}, end_shipper_id = nil) if params.instance_of?(EasyPost::Models::Rate) params = { rate: params.clone } end params[:end_shipper_id] = end_shipper_id if end_shipper_id response = @client.make_request(:post, "shipments/#{id}/buy", params) EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS) end |
#create(params = {}) ⇒ Object
Create a Shipment.
9 10 11 12 13 14 |
# File 'lib/easypost/services/shipment.rb', line 9 def create(params = {}) wrapped_params = { shipment: params } response = @client.make_request(:post, 'shipments', wrapped_params) EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS) end |
#generate_form(id, form_type, form_options = {}) ⇒ Object
Generate a form for a Shipment.
101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/easypost/services/shipment.rb', line 101 def generate_form(id, form_type, = {}) params = {} params[:type] = form_type merged_params = params.merge() wrapped_params = { form: merged_params, } response = @client.make_request(:post, "shipments/#{id}/forms", wrapped_params) EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS) end |
#get_next_page(collection, page_size = nil) ⇒ Object
Get the next page of shipments.
35 36 37 38 39 40 41 42 43 |
# File 'lib/easypost/services/shipment.rb', line 35 def get_next_page(collection, page_size = nil) raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection) params = { before_id: collection.shipments.last.id } params[:page_size] = page_size unless page_size.nil? params.merge!(collection[EasyPost::InternalUtilities::Constants::FILTERS_KEY]).delete(:key) all(params) end |
#get_smart_rates(id) ⇒ Object
Get the SmartRates of a Shipment.
53 54 55 56 57 |
# File 'lib/easypost/services/shipment.rb', line 53 def get_smart_rates(id) response = @client.make_request(:get, "shipments/#{id}/smartrate") EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).result || [] end |
#insure(id, params = {}) ⇒ Object
Insure a Shipment.
72 73 74 75 76 77 |
# File 'lib/easypost/services/shipment.rb', line 72 def insure(id, params = {}) params = { amount: params } if params.is_a?(Integer) || params.is_a?(Float) response = @client.make_request(:post, "shipments/#{id}/insure", params) EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS) end |
#label(id, params = {}) ⇒ Object
Convert the label format of a Shipment.
87 88 89 90 91 92 |
# File 'lib/easypost/services/shipment.rb', line 87 def label(id, params = {}) params = { file_format: params } if params.is_a?(String) response = @client.make_request(:get, "shipments/#{id}/label", params) EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS) end |
#lowest_smart_rate(id, delivery_days, delivery_accuracy) ⇒ Object
Get the lowest SmartRate of a Shipment.
95 96 97 98 |
# File 'lib/easypost/services/shipment.rb', line 95 def lowest_smart_rate(id, delivery_days, delivery_accuracy) smart_rates = get_smart_rates(id) EasyPost::Util.get_lowest_smart_rate(smart_rates, delivery_days, delivery_accuracy) end |
#recommend_ship_date(id, desired_delivery_date) ⇒ Object
Retrieve a recommended ship date for an existing Shipment via the Precision Shipping API, based on a specific desired delivery date.
123 124 125 126 127 128 129 |
# File 'lib/easypost/services/shipment.rb', line 123 def recommend_ship_date(id, desired_delivery_date) url = "shipments/#{id}/smartrate/precision_shipping" params = { desired_delivery_date: desired_delivery_date } response = @client.make_request(:get, url, params) EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).rates end |
#refund(id, params = {}) ⇒ Object
Refund a Shipment.
80 81 82 83 84 |
# File 'lib/easypost/services/shipment.rb', line 80 def refund(id, params = {}) response = @client.make_request(:post, "shipments/#{id}/refund", params) EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS) end |
#regenerate_rates(id) ⇒ Object
Regenerate the rates of a Shipment.
46 47 48 49 50 |
# File 'lib/easypost/services/shipment.rb', line 46 def regenerate_rates(id) response = @client.make_request(:post, "shipments/#{id}/rerate") EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS) end |
#retrieve(id) ⇒ Object
Retrieve a Shipment.
17 18 19 20 21 |
# File 'lib/easypost/services/shipment.rb', line 17 def retrieve(id) response = @client.make_request(:get, "shipments/#{id}") EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS) end |
#retrieve_estimated_delivery_date(id, planned_ship_date) ⇒ Object
Retrieves the estimated delivery date of each Rate via SmartRate.
114 115 116 117 118 119 120 |
# File 'lib/easypost/services/shipment.rb', line 114 def retrieve_estimated_delivery_date(id, planned_ship_date) url = "shipments/#{id}/smartrate/delivery_date" params = { planned_ship_date: planned_ship_date } response = @client.make_request(:get, url, params) EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).rates end |