class Correios::Pricefier::ListServices
Public Class Methods
new(data = {})
click to toggle source
Calls superclass method
# File lib/pricefier/requests/list_services.rb, line 4 def initialize(data = {}) @show_request = data[:show_request] super() end
Public Instance Methods
request(method)
click to toggle source
# File lib/pricefier/requests/list_services.rb, line 9 def request(method) @method = method @method_snake = method.underscore puts xml if @show_request == true begin format_response(Pricefier.client.call( @method_snake.to_sym, soap_action: "http://tempuri.org/#{@method}", 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_response(response)
click to toggle source
# File lib/pricefier/requests/list_services.rb, line 39 def format_response(response) response = response["#{@method_snake}_response".to_sym]["#{@method_snake}_result".to_sym] services = response[:servicos_calculo][:c_servicos_calculo] services = [services] if services.is_a?(Hash) { services: services.map { |s| format_service(s) } } end
format_service(service)
click to toggle source
# File lib/pricefier/requests/list_services.rb, line 48 def format_service(service) if service[:erro].to_i.zero? { code: service[:codigo], description: service[:descricao].strip, calculate_price: string_to_bool(service[:calcula_preco]), calculate_deadline: if service[:calcula_prazo].present? string_to_bool(service[:calcula_prazo]) else false end } else { code: service[:codigo], error: { code: service[:erro], description: service[:msg_erro] } } end end
xml()
click to toggle source
# File lib/pricefier/requests/list_services.rb, line 29 def xml Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| xml['soap'].Envelope(Pricefier.namespaces) do xml['soap'].Body do xml['ns1'].send(@method) end end end.doc.root.to_xml end