class EasyPost::Shipment

Public Instance Methods

buy(params={}) click to toggle source
# File lib/easypost/shipment.rb, line 22
def buy(params={})
  if params.instance_of?(EasyPost::Rate)
    temp = params.clone
    params = {}
    params[:rate] = temp
  end

  response = EasyPost.make_request(:post, url + '/buy', @api_key, params)
  self.refresh_from(response, @api_key, true)

  return self
end
get_rates(params={}) click to toggle source
# File lib/easypost/shipment.rb, line 2
def get_rates(params={})
  response = EasyPost.make_request(:get, url + '/rates', @api_key, params)
  self.refresh_from(response, @api_key, true)

  return self
end
get_smartrates() click to toggle source
# File lib/easypost/shipment.rb, line 16
def get_smartrates
  response = EasyPost.make_request(:get, url + '/smartrate', @api_key)

  return response.fetch('result', [])
end
insure(params={}) click to toggle source
# File lib/easypost/shipment.rb, line 35
def insure(params={})
  if params.is_a?(Integer) || params.is_a?(Float)
    temp = params.clone
    params = {}
    params[:amount] = temp
  end

  response = EasyPost.make_request(:post, url + '/insure', @api_key, params)
  self.refresh_from(response, @api_key, true)

  return self
end
label(params={}) click to toggle source
# File lib/easypost/shipment.rb, line 62
def label(params={})
  if params.is_a?(String)
    temp = params.clone
    params = {}
    params[:file_format] = temp
  end

  response = EasyPost.make_request(:get, url + '/label', @api_key, params)
  self.refresh_from(response, @api_key, true)

  return self
end
lowest_rate(carriers=[], services=[]) click to toggle source
# File lib/easypost/shipment.rb, line 75
def lowest_rate(carriers=[], services=[])
  lowest = nil

  self.get_rates unless self.rates

  carriers = EasyPost::Util.normalize_string_list(carriers)

  negative_carriers = []
  carriers_copy = carriers.clone
  carriers_copy.each do |carrier|
    if carrier[0,1] == '!'
      negative_carriers << carrier[1..-1]
      carriers.delete(carrier)
    end
  end

  services = EasyPost::Util.normalize_string_list(services)

  negative_services = []
  services_copy = services.clone
  services_copy.each do |service|
    if service[0,1] == '!'
      negative_services << service[1..-1]
      services.delete(service)
    end
  end

  self.rates.each do |k|

    rate_carrier = k.carrier.downcase
    if carriers.size() > 0 && !carriers.include?(rate_carrier)
      next
    end
    if negative_carriers.size() > 0 && negative_carriers.include?(rate_carrier)
      next
    end

    rate_service = k.service.downcase
    if services.size() > 0 && !services.include?(rate_service)
      next
    end
    if negative_services.size() > 0 && negative_services.include?(rate_service)
      next
    end

    if lowest == nil || k.rate.to_f < lowest.rate.to_f
        lowest = k
    end
  end

  raise EasyPost::Error.new('No rates found.') if lowest == nil

  return lowest
end
print(params={}) click to toggle source
refund(params={}) click to toggle source
# File lib/easypost/shipment.rb, line 48
def refund(params={})
  response = EasyPost.make_request(:get, url + '/refund', @api_key, params)
  self.refresh_from(response, @api_key, true)

  return self
end
regenerate_rates(params={}) click to toggle source
# File lib/easypost/shipment.rb, line 9
def regenerate_rates(params={})
  response = EasyPost.make_request(:post, url + '/rerate', @api_key, params)
  self.refresh_from(response, @api_key, true)

  return self
end