class TicketSharing::Request
Constants
- CA_PATH
- MAX_REDIRECTS
Public Class Methods
new(connection = TicketSharing.connection)
click to toggle source
# File lib/ticket_sharing/request.rb, line 10 def initialize(connection = TicketSharing.connection) @connection = connection end
Public Instance Methods
request(method, url, options = {})
click to toggle source
# File lib/ticket_sharing/request.rb, line 14 def request(method, url, options = {}) raise ArgumentError, "Unsupported method: #{method.inspect}" unless %i(get post put delete).include?(method) response = send_request(method, url, options) follow_redirects!(method, response, options) end
Private Instance Methods
configure_request(request, url, options)
click to toggle source
# File lib/ticket_sharing/request.rb, line 47 def configure_request(request, url, options) uri = URI.parse(url) request.url url { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }.merge(options[:headers] || {}).each do |h, v| request.headers[h] = v end request.body = options[:body] end
follow_redirects!(method, response, options)
click to toggle source
# File lib/ticket_sharing/request.rb, line 61 def follow_redirects!(method, response, options) redirects = 0 while (300..399).include?(response.status) if redirects >= MAX_REDIRECTS raise TicketSharing::TooManyRedirects else redirects += 1 end response = send_request(method, response['Location'], options) end response end
send_request(method, url, options)
click to toggle source
# File lib/ticket_sharing/request.rb, line 23 def send_request(method, url, options) response = nil with_ssl_connection(options) do response = @connection.send(method) do |request| configure_request(request, url, options) end end response end
with_ssl_connection(options) { || ... }
click to toggle source
# File lib/ticket_sharing/request.rb, line 35 def with_ssl_connection(options) ssl_config = {} ssl_config[:ca_path] = CA_PATH if File.exist?(CA_PATH) ssl_config[:verify] = false if options[:ssl] && options[:ssl][:verify] == false old_configuration = @connection.instance_variable_get(:@ssl) @connection.instance_variable_set(:@ssl, ssl_config) unless ssl_config.empty? yield ensure @connection.instance_variable_set(:@ssl, old_configuration) end