Sha256: 5cdd3a5fd72c51b96eaf10a25400ecaf32c4bcf82e0dbdf8ab5273f03e1db800

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

require "base64"

module Shippinglogic
  class UPS
    class Label < Service
      def self.path
        "/LabelRecovery"
      end
      
      attribute :tracking_number, :string
      
      private
        def target
          @target ||= parse_response(request(build_request))
        end
        
        # Just building some XML to send off to USP using our various options
        def build_request
          b = builder
          build_authentication(b)
          b.instruct!
          
          b.LabelRecoveryRequest do
            b.Request do
              b.RequestAction "LabelRecovery"
            end
            
            b.LabelSpecification do
              b.LabelImageFormat do
                b.Code "GIF"
              end
            end
            
            b.Translate do
              b.LanguageCode "eng"
              b.DialectCode "US"
              b.Code "01"
            end
            
            b.TrackingNumber tracking_number
          end
        end
        
        def parse_response(response)
          return unless details = response.fetch(:label_results, {})[:label_image]
          Base64.decode64(details[:graphic_image])
        end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shippinglogic-1.2.3 lib/shippinglogic/ups/label.rb