class MT::DataAPI::Client::APIRequest
Send request to endpoint
Public Class Methods
new(endpoint)
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 9 def initialize(endpoint) @endpoint = endpoint end
Public Instance Methods
send(access_token, args)
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 13 def send(access_token, args) uri = URI.parse(@endpoint.request_url(args)) net_http(uri).start do |http| http.request(request(uri, access_token, args)) end end
Private Instance Methods
contains_file_object?(args)
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 37 def contains_file_object?(args) args.values.any? { |v| file?(v) } end
file?(file)
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 41 def file?(file) file.is_a?(File) && File.file?(file.path) end
http_request_class()
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 45 def http_request_class Object.const_get("Net::HTTP::#{@endpoint.verb.capitalize}") end
multipart_args(args)
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 49 def multipart_args(args) args.map do |k, v| if file?(v) [k.to_s, v, { filename: File.basename(v.path) }] else [k.to_s, v.to_s] end end end
net_http(uri)
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 22 def net_http(uri) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' http end
post_or_put?()
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 59 def post_or_put? %w[POST PUT].include? @endpoint.verb end
request(uri, access_token, args)
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 28 def request(uri, access_token, args) req = http_request_class.new(uri) if access_token req['X-MT-Authorization'] = "MTAuth accessToken=#{access_token}" end set_form(req, args) if post_or_put? req end
set_form(req, args)
click to toggle source
# File lib/mt/data_api/client/api_request.rb, line 63 def set_form(req, args) if contains_file_object?(args) req.set_form(multipart_args(args), 'multipart/form-data') else req.set_form_data(args) end end