Sha256: 1fed9811428b26f70e3eec4f60f253289ff2a0d83ede1f13867dc7ad1da02e5d

Contents?: true

Size: 1.33 KB

Versions: 10

Compression:

Stored size: 1.33 KB

Contents

require 'base64'
require 'pathname'

module Fedex
  class Label
    attr_accessor :options, :image, :response_details

    # Initialize Fedex::Label Object
    # @param [Hash] options
    def initialize(label_details = {})
      @response_details = label_details[:process_shipment_reply]
      package_details = label_details[:process_shipment_reply][:completed_shipment_detail][:completed_package_details]
      @options = package_details[:label]
      @options[:format] = label_details[:format]
      @options[:tracking_number] = package_details[:tracking_ids][:tracking_number]
      @options[:file_name] = label_details[:file_name]

      @image = Base64.decode64(options[:parts][:image]) if has_image?

      if file_name = @options[:file_name]
        save(file_name, false)
      end
    end

    def name
      [tracking_number, format].join('.')
    end

    def format
      options[:format]
    end

    def file_name
      options[:file_name]
    end

    def tracking_number
      options[:tracking_number]
    end

    def has_image?
      options[:parts] && options[:parts][:image]
    end

    def save(path, append_name = true)
      return unless has_image?

      full_path = Pathname.new(path)
      full_path = full_path.join(name) if append_name

      File.open(full_path, 'wb') do|f|
        f.write(@image)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
fedex-3.6.1 lib/fedex/label.rb
fedex-3.6.0 lib/fedex/label.rb
fedex-3.4.0 lib/fedex/label.rb
fedex-3.3.1 lib/fedex/label.rb
fedex-3.3.0 lib/fedex/label.rb
fedex-3.1.0 lib/fedex/label.rb
fedex-3.0.0 lib/fedex/label.rb
fedex-2.2.2 lib/fedex/label.rb
ShippingInfo-2.0 lib/fedex/label.rb
fedex-2.2.1 lib/fedex/label.rb