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