class PayPal::FreteFacil::WebService
Constants
- URL
Public Class Methods
new(shipping)
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 10 def initialize(shipping) @uri = URI.parse(URL) @shipping = shipping end
Public Instance Methods
request!()
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 15 def request! http = build_http request = build_request log_request(request) response = http.request(request) log_response(response) response.body end
Private Instance Methods
build_http()
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 29 def build_http http = Net::HTTP.new(@uri.host, @uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE http end
build_request()
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 36 def build_request request = Net::HTTP::Post.new(@uri.path) request["Content-Type"] = "text/xml; charset=utf-8" request["SoapAction"] = "#{URL}/getPreco" request.body = request_body request end
format_headers_for(http)
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 84 def format_headers_for(http) # I'm using an empty block in each_header method for Ruby 1.8.7 compatibility. http.each_header{}.map { |name, values| "#{name}: #{values.first}" }.join("\n") end
format_message(http) { || ... }
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 78 def format_message(http) message = yield message << with_line_break { format_headers_for(http) } if PayPal::FreteFacil.log_level == :debug message << with_line_break { http.body } end
log_request(request)
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 60 def log_request(request) message = format_message(request) do message = with_line_break { "PayPal-Frete-Facil Request:" } message << with_line_break { "POST #{URL}" } end PayPal::FreteFacil.log(message) end
log_response(response)
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 69 def log_response(response) message = format_message(response) do message = with_line_break { "PayPal-Frete-Facil Response:" } message << with_line_break { "HTTP/#{response.http_version} #{response.code} #{response.message}" } end PayPal::FreteFacil.log(message) end
request_body()
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 44 def request_body "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:shipping=\"https://ff.paypal-brasil.com.br/FretesPayPalWS\">" + "<soapenv:Header />" + "<soapenv:Body>" + "<shipping:getPreco>" + "<cepOrigem>#{@shipping.from_zip}</cepOrigem>" + "<cepDestino>#{@shipping.to_zip}</cepDestino>" + "<largura>#{@shipping.width.round}</largura>" + "<altura>#{@shipping.height.round}</altura>" + "<profundidade>#{@shipping.length.round}</profundidade>" + "<peso>#{@shipping.weight}</peso>" + "</shipping:getPreco>" + "</soapenv:Body>" + "</soapenv:Envelope>" end
with_line_break()
click to toggle source
# File lib/paypal/fretefacil/web_service.rb, line 89 def with_line_break "#{yield}\n" end