class Deliveries::Couriers::Spring::Shipments::Create

Attributes

parcels[RW]
receiver[RW]
reference_code[RW]
sender[RW]

Public Class Methods

new(sender:, receiver:, parcels:, reference_code:) click to toggle source
# File lib/deliveries/couriers/spring/shipments/create.rb, line 8
def initialize(sender:, receiver:, parcels:, reference_code:)
  self.sender = sender
  self.receiver = receiver
  self.parcels = parcels
  self.reference_code = reference_code
end

Public Instance Methods

execute() click to toggle source
# File lib/deliveries/couriers/spring/shipments/create.rb, line 15
def execute
  params = Deliveries::Couriers::Spring::Shipments::Create::FormatParams.new(
    sender: sender.courierize(:spring),
    receiver: receiver.courierize(:spring),
    parcels: parcels,
    reference_code: reference_code
  ).execute

  response = Deliveries::Couriers::Spring::Request.execute(params: params)

  tracking_code = response[:Shipment][:TrackingNumber]
  label = Label.new(
    url: response[:Shipment][:CarrierTrackingUrl],
    raw: Base64.decode64(response[:Shipment][:LabelImage]).force_encoding('binary')
  )

  Deliveries::Delivery.new(
    courier_id: Deliveries::Couriers::Spring::COURIER_ID,
    sender: sender,
    receiver: receiver,
    parcels: parcels,
    reference_code: reference_code,
    tracking_code: tracking_code,
    label: label
  )
end