class Fedex::Label

Attributes

image[RW]
options[RW]
response_details[RW]

Public Class Methods

new(label_details = {}, associated_shipments = false) click to toggle source

Initialize Fedex::Label Object @param [Hash] options

# File lib/fedex/label.rb, line 10
def initialize(label_details = {}, associated_shipments = false)
  if associated_shipments
    package_details = label_details
    @options = package_details[:label]
    @options[:tracking_number] = package_details[:tracking_id]
  else
    @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[:tracking_number] = package_details[:tracking_ids][:tracking_number]
  end
  @options[:format] = label_details[:format]
  @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

Public Instance Methods

associated_shipments() click to toggle source
# File lib/fedex/label.rb, line 61
def associated_shipments
  if (label_details = @response_details[:completed_shipment_detail][:associated_shipments])
    label_details[:format] = format
    label_details[:file_name] = file_name
    Label.new(label_details, true)
  else
    nil
  end
end
file_name() click to toggle source
# File lib/fedex/label.rb, line 38
def file_name
  options[:file_name]
end
format() click to toggle source
# File lib/fedex/label.rb, line 34
def format
  options[:format]
end
has_image?() click to toggle source
# File lib/fedex/label.rb, line 46
def has_image?
  options[:parts] && options[:parts][:image]
end
name() click to toggle source
# File lib/fedex/label.rb, line 30
def name
  [tracking_number, format].join('.')
end
save(path, append_name = true) click to toggle source
# File lib/fedex/label.rb, line 50
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
tracking_number() click to toggle source
# File lib/fedex/label.rb, line 42
def tracking_number
  options[:tracking_number]
end