Class: Deliveries::Couriers::Ups::Labels::Generate

Inherits:
Object
  • Object
show all
Includes:
JsonRequest, LabelUtils
Defined in:
lib/deliveries/couriers/ups/labels/generate.rb

Constant Summary collapse

API_VERSION =
'V1903'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from LabelUtils

image2pdf, merge_pdfs

Constructor Details

#initialize(tracking_code:) ⇒ Generate

Returns a new instance of Generate.



13
14
15
# File 'lib/deliveries/couriers/ups/labels/generate.rb', line 13

def initialize(tracking_code:)
  self.tracking_code = tracking_code
end

Instance Attribute Details

#tracking_codeObject

Returns the value of attribute tracking_code.



11
12
13
# File 'lib/deliveries/couriers/ups/labels/generate.rb', line 11

def tracking_code
  @tracking_code
end

Instance Method Details

#executeObject

Raises:



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/deliveries/couriers/ups/labels/generate.rb', line 17

def execute
  request = {
    LabelRecoveryRequest: {
      TrackingNumber: tracking_code,
      ShipperNumber: ,
      LabelSpecification: {
        LabelImageFormat: {
          Code: 'GIF'
        }
      },
      LabelDelivery: {
        LabelLinkIndicator: ''
      }
    }
  }

  response = call request

  label_url = response.dig(:LabelRecoveryResponse, :LabelResults, :LabelImage, :URL)
  label_encoded = response.dig(:LabelRecoveryResponse, :LabelResults, :LabelImage, :GraphicImage)
  raise Error, 'Cannot obtain encoded label' if label_encoded.nil?

  label_gif = Base64.decode64(label_encoded).force_encoding('binary')
  label_pdf = image2pdf label_gif, height: 4

  {
    raw: label_pdf,
    url: label_url
  }
end