module Deliveries::Couriers::Spring

Constants

COURIER_ID
Config
ENDPOINT_LIVE
ENDPOINT_TEST

Public Instance Methods

create_pickup(sender:, receiver:, parcels:, reference_code:, pickup_date: nil, **) click to toggle source
# File lib/deliveries/couriers/spring.rb, line 68
def create_pickup(sender:, receiver:, parcels:, reference_code:, pickup_date: nil, **)
  delivery = Shipments::Create.new(
    sender: sender,
    receiver: receiver,
    parcels: parcels,
    reference_code: reference_code
  ).execute

  Deliveries::Pickup.new(delivery: delivery, pickup_date: pickup_date)
end
create_shipment(sender:, receiver:, parcels:, reference_code:, shipment_date: nil, **) click to toggle source
# File lib/deliveries/couriers/spring.rb, line 57
def create_shipment(sender:, receiver:, parcels:, reference_code:, shipment_date: nil, **)
  delivery = Shipments::Create.new(
    sender: sender,
    receiver: receiver,
    parcels: parcels,
    reference_code: reference_code
  ).execute

  Deliveries::Shipment.new(delivery: delivery, shipment_date: shipment_date)
end
get_label(tracking_code:, **) click to toggle source
# File lib/deliveries/couriers/spring.rb, line 36
def get_label(tracking_code:, **)
  decoded_label, url = Labels::Generate.new(
    tracking_code: tracking_code
  ).execute.values_at(:decoded_label, :url)

  Deliveries::Label.new(
    raw: decoded_label,
    url: url
  )
end
get_labels(tracking_codes:, **) click to toggle source
# File lib/deliveries/couriers/spring.rb, line 47
def get_labels(tracking_codes:, **)
  labels = Deliveries::Labels.new

  tracking_codes.each do |tracking_code|
    labels << get_label(tracking_code: tracking_code)
  end

  labels
end
pickup_info(tracking_code:, **) click to toggle source
# File lib/deliveries/couriers/spring.rb, line 79
def pickup_info(tracking_code:, **)
  shipment_info(tracking_code: tracking_code)
end
shipment_info(tracking_code:, **) click to toggle source
# File lib/deliveries/couriers/spring.rb, line 27
def shipment_info(tracking_code:, **)
  response = Shipments::Trace.new(
    tracking_code: tracking_code
  ).execute

  tracking_info_params = Shipments::Trace::FormatResponse.new(response: response).execute
  Deliveries::TrackingInfo.new(**tracking_info_params)
end