class ReactiveShipping::USPSReturns
Constants
- API_CODES
- LIVE_DOMAIN
- LIVE_RESOURCE
- TEST_DOMAIN
- TEST_RESOURCE
- USE_SSL
Public Instance Methods
external_return_label_request(label, options = {})
click to toggle source
# File lib/reactive_shipping/carriers/usps_returns.rb, line 28 def external_return_label_request(label, options = {}) response = commit(:external_return_label_request, label.to_xml, (options[:test] || false)) parse_external_return_label_response(response) end
requirements()
click to toggle source
# File lib/reactive_shipping/carriers/usps_returns.rb, line 24 def requirements [] end
Protected Instance Methods
commit(action, request, test = false)
click to toggle source
# File lib/reactive_shipping/carriers/usps_returns.rb, line 74 def commit(action, request, test = false) ssl_get(request_url(action, request, test)) end
external_return_label_errors(document)
click to toggle source
# File lib/reactive_shipping/carriers/usps_returns.rb, line 57 def external_return_label_errors(document) return {} unless document.respond_to?(:elements) res = {} if node = document.at('*/errors') if node.at('ExternalReturnLabelError') if message = node.at('ExternalReturnLabelError/InternalErrorDescription').try(:text) code = node.at('ExternalReturnLabelError/InternalErrorNumber').try(:text) || '' res = {:error => {:code => code, :message => message}} elsif message = node.at('ExternalReturnLabelError/ExternalErrorDescription').try(:text) code = node.at('ExternalReturnLabelError/ExternalErrorNumber').try(:text) || '' res = {:error => {:code => code, :message => message}} end end end res end
parse_external_return_label_response(response)
click to toggle source
# File lib/reactive_shipping/carriers/usps_returns.rb, line 35 def parse_external_return_label_response(response) tracking_number, postal_routing, return_label, message = '', '', '', '', '' xml = Nokogiri::XML(response) error = external_return_label_errors(xml) if error.is_a?(Hash) && error.size > 0 message << "#{error[:error][:code]}: #{error[:error][:message]}" else tracking_number = xml.at('TrackingNumber').try(:text) postal_routing = xml.at('PostalRouting').try(:text) return_label = xml.at('ReturnLabel').try(:text) end ExternalReturnLabelResponse.new(message.length == 0, message, Hash.from_xml(response), :xml => response, :carrier => @@name, :request => last_request, :return_label => return_label, :postal_routing => postal_routing, :tracking_number => tracking_number ) end
request_url(action, request, test)
click to toggle source
# File lib/reactive_shipping/carriers/usps_returns.rb, line 78 def request_url(action, request, test) scheme = USE_SSL[action] ? 'https://' : 'http://' host = test ? TEST_DOMAIN : LIVE_DOMAIN resource = test ? TEST_RESOURCE : LIVE_RESOURCE "#{scheme}#{host}/#{resource}?#{API_CODES[action]}=#{URI.encode(request)}" end