class Correios::SRO::TrackShippings
Public Class Methods
new(data = {})
click to toggle source
Calls superclass method
# File lib/SRO/requests/track_shippings.rb, line 4 def initialize(data = {}) @credentials = Correios.credentials @show_request = data[:show_request] @label_numbers = data[:label_numbers] @query_type = data[:query_type] @result_type = data[:result_type] @language = data[:language] super() end
Public Instance Methods
request(method)
click to toggle source
# File lib/SRO/requests/track_shippings.rb, line 15 def request(method) @method = method @method_snake = method.underscore puts xml if @show_request == true begin format_response(SRO.client.call( @method_snake.to_sym, soap_action: '', xml: xml ).to_hash) rescue Savon::SOAPFault => error generate_soap_fault_exception(error) rescue Savon::HTTPError => error generate_http_exception(error.http.code) end end
Private Instance Methods
format_destination(destination)
click to toggle source
# File lib/SRO/requests/track_shippings.rb, line 114 def format_destination(destination) return nil if destination.nil? { city: destination[:cidade], neighborhood: destination[:bairro], state: destination[:uf], site: { description: destination[:local], zip_code: destination[:codigo] } } end
format_event(event)
click to toggle source
# File lib/SRO/requests/track_shippings.rb, line 96 def format_event(event) { movement: inverse_tracking_event_status(event), type: event[:tipo], status: event[:status], time: string_to_time_no_second(event[:data], event[:hora]), description: event[:descricao], detail: event[:detalhe], city: event[:cidade], state: event[:uf], destination: format_destination(event[:destino]), site: { description: event[:local], zip_code: event[:codigo] } } end
format_object(object)
click to toggle source
# File lib/SRO/requests/track_shippings.rb, line 72 def format_object(object) if object[:erro].present? return { label: { number: object[:numero] }, error: object[:erro] } end events = object[:evento] events = [events] if events.is_a?(Hash) { label: { number: object[:numero], initials: object[:sigla], name: object[:nome], category: object[:categoria] }, events: events.map {|e| format_event(e)} } end
format_response(response)
click to toggle source
# File lib/SRO/requests/track_shippings.rb, line 63 def format_response(response) response = response["#{@method_snake}_response".to_sym][:return] objects = response[:objeto] objects = [objects] if objects.is_a?(Hash) generate_sro_exception(objects) { tracking: objects.map {|o| format_object(o)} } end
xml()
click to toggle source
# File lib/SRO/requests/track_shippings.rb, line 35 def xml Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| xml['soap'].Envelope(SRO.namespaces) do xml['soap'].Body do xml['ns1'].send(@method) do parent_namespace = xml.parent.namespace xml.parent.namespace = nil if @method == 'buscaEventosLista' @label_numbers.each do |label_number| xml.objetos label_number end elsif @method == 'buscaEventos' xml.objetos array_to_string(@label_numbers) end xml.tipo tracking_query_type(@query_type) xml.resultado tracking_result_type(@result_type) xml.lingua tracking_language(@language) xml.usuario @credentials.sro_user xml.senha @credentials.sro_password xml.parent.namespace = parent_namespace end end end end.doc.root.to_xml end