class Fedex::Document
Attributes
filenames[R]
response_details[R]
tracking_number[R]
Public Class Methods
new(shipment_details = {})
click to toggle source
Initialize Fedex::Document
Object @param [Hash] options
# File lib/fedex/document.rb, line 7 def initialize(shipment_details = {}) @response_details = shipment_details[:process_shipment_reply] @filenames = shipment_details[:filenames] # extract label and tracking number package_details = @response_details[:completed_shipment_detail][:completed_package_details] label = package_details[:label] @tracking_number = package_details[:tracking_ids][:tracking_number] # extract shipment documents shipment_documents = @response_details[:completed_shipment_detail][:shipment_documents] || [] # unify iteration interface unless shipment_documents.kind_of?(Array) shipment_documents = [shipment_documents] end # keeps the filenames which actually saved save(@filenames[:label], label) # save shipment documents shipment_documents.each do |doc| doc_type = doc[:type].downcase.to_sym save(@filenames[doc_type], doc) end end
Public Instance Methods
has_image?(content)
click to toggle source
# File lib/fedex/document.rb, line 46 def has_image?(content) content[:parts] && content[:parts][:image] end
save(path, content)
click to toggle source
# File lib/fedex/document.rb, line 34 def save(path, content) return unless path && has_image?(content) image = Base64.decode64(content[:parts][:image]) full_path = Pathname.new(path) File.open(full_path, 'wb') do|f| f.write(image) end full_path end