class APIReaper::Requester

This is a Net HTTP requester class.

Public Class Methods

new(method, url, opts) click to toggle source

Class constructor method

# File lib/apireaper/requester.rb, line 26
def initialize(method, url, opts)
  @method = method
  @uri = URI.parse(url)
  @opts = opts
  @http = Net::HTTP.new(@uri.host, @uri.port)
  @http.use_ssl = @uri.scheme.eql?('https')
  @http.verify_mode = OpenSSL::SSL::VERIFY_NONE if opts['insecure']
end

Public Instance Methods

basic_auth(request) click to toggle source

Set the authentication data

# File lib/apireaper/requester.rb, line 42
def basic_auth(request)
  unless @opts['user'].nil? || @opts['password'].nil?
    request.basic_auth(@opts['user'], @opts['password'])
  end
  request
end
exit_with_error(errno, message) click to toggle source

Exit with the specified errno and message

# File lib/apireaper/requester.rb, line 36
def exit_with_error(errno, message)
  puts message unless @opts['quiet']
  exit errno
end
format_data(request) click to toggle source

Select the right data type

# File lib/apireaper/requester.rb, line 50
def format_data(request)
  return request if @opts['data'].nil?
  if json?(@opts['data']) then format_json_data(request)
  else format_www_form_data(request)
  end
end
format_header(request) click to toggle source

Set the headers given as argument

# File lib/apireaper/requester.rb, line 58
def format_header(request)
  unless @opts['header'].nil?
    @opts['header'].split(',').each do |h|
      (key, value) = h.split(':')
      request[key] = value
    end
  end
  request
end
format_json_data(request) click to toggle source

Set json data as request body

# File lib/apireaper/requester.rb, line 69
def format_json_data(request)
  request.body = @opts['data']
  request
end
format_www_form_data(request) click to toggle source

Split the data string into a hash

# File lib/apireaper/requester.rb, line 75
def format_www_form_data(request)
  request.set_form_data(CGI.parse(@opts['data']))
  request
end
json?(str) click to toggle source

Check if the data string is a well formated json

# File lib/apireaper/requester.rb, line 81
def json?(str)
  JSON.parse(str)
  true
rescue JSON::ParserError
  false
end
request() click to toggle source

Select request method

# File lib/apireaper/requester.rb, line 118
def request
  case @method.upcase
  when 'DELETE' then rest_request_delete
  when 'GET' then rest_request_get
  when 'POST' then rest_request_post
  when 'PUT' then rest_request_put
  else raise "#{@method.upcase} is an unknown method"
  end
end
rest_request_delete() click to toggle source

DELETE method

# File lib/apireaper/requester.rb, line 89
def rest_request_delete
  exit_with_error(3, 'DELETE is not yet implemented')
  # TODO
end
rest_request_get() click to toggle source

GET method

# File lib/apireaper/requester.rb, line 95
def rest_request_get
  req = Net::HTTP::Get.new(@uri.request_uri)
  req = format_header(req)
  req = basic_auth(req)
  @http.request(req)
end
rest_request_post() click to toggle source

POST method

# File lib/apireaper/requester.rb, line 103
def rest_request_post
  req = Net::HTTP::Post.new(@uri.request_uri)
  req = format_data(req)
  req = format_header(req)
  req = basic_auth(req)
  @http.request(req)
end
rest_request_put() click to toggle source

PUT method

# File lib/apireaper/requester.rb, line 112
def rest_request_put
  exit_with_error(3, 'PUT is not yet implemented')
  # TODO
end