module Spreedly::SslRequester
Public Instance Methods
ssl_get(endpoint, headers)
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 3 def ssl_get(endpoint, headers) ssl_request(:get, endpoint, nil, headers) end
ssl_options(endpoint)
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 19 def ssl_options(endpoint) ssl_request(:options, endpoint, nil, {}) end
ssl_post(endpoint, body, headers, talking_to_gateway = false)
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 7 def ssl_post(endpoint, body, headers, talking_to_gateway = false) ssl_request(:post, endpoint, body, headers, talking_to_gateway: talking_to_gateway) end
ssl_put(endpoint, body, headers)
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 15 def ssl_put(endpoint, body, headers) ssl_request(:put, endpoint, body, headers) end
ssl_raw_get(endpoint, headers)
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 11 def ssl_raw_get(endpoint, headers) ssl_request(:get, endpoint, nil, headers, return_raw: true) end
Private Instance Methods
handle_response(response, return_raw)
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 45 def handle_response(response, return_raw) case response.code.to_i when 200...300 return_raw ? response.body : xml_doc(response) when 401 raise AuthenticationError.new(xml_doc(response)) when 404 raise NotFoundError.new(xml_doc(response)) when 402 raise PaymentRequiredError.new(xml_doc(response)) when 422 if xml_doc(response).at_xpath('.//errors/error') raise TransactionCreationError.new(xml_doc(response)) else xml_doc(response) end else raise UnexpectedResponseError.new(response) end end
raw_ssl_request(method, endpoint, body, headers = {})
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 40 def raw_ssl_request(method, endpoint, body, headers = {}) connection = Spreedly::Connection.new(endpoint) connection.request(method, body, headers) end
show_raw_response(raw_response)
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 70 def show_raw_response(raw_response) return unless ENV['SHOW_RAW_RESPONSE'] == 'true' puts raw_response.inspect puts "\nraw_response.code: #{raw_response.code}\nraw_response.body:\n#{raw_response.body}" end
ssl_request(method, endpoint, body, headers, options = {})
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 25 def ssl_request(method, endpoint, body, headers, options = {}) opts = { talking_to_gateway: false, return_raw: false }.merge(options) how_long = opts[:talking_to_gateway] ? 66 : 10 raw_response = Timeout::timeout(how_long) do raw_ssl_request(method, endpoint, body, headers) end show_raw_response(raw_response) handle_response(raw_response, opts[:return_raw]) rescue Timeout::Error => e raise Spreedly::TimeoutError.new end
xml_doc(response)
click to toggle source
# File lib/spreedly/ssl_requester.rb, line 66 def xml_doc(response) Nokogiri::XML(response.body) end