Class: APIReaper::Requester
- Inherits:
-
Object
- Object
- APIReaper::Requester
- Defined in:
- lib/apireaper/requester.rb
Overview
This is a Net HTTP requester class.
Instance Method Summary collapse
-
#basic_auth(request) ⇒ Object
Set the authentication data.
-
#exit_with_error(errno, message) ⇒ Object
Exit with the specified errno and message.
-
#format_data(request) ⇒ Object
Select the right data type.
-
#format_header(request) ⇒ Object
Set the headers given as argument.
-
#format_json_data(request) ⇒ Object
Set json data as request body.
-
#format_www_form_data(request) ⇒ Object
Split the data string into a hash.
-
#initialize(method, url, opts) ⇒ Requester
constructor
Class constructor method.
-
#json?(str) ⇒ Boolean
Check if the data string is a well formated json.
-
#request ⇒ Object
Select request method.
-
#rest_request_delete ⇒ Object
DELETE method.
-
#rest_request_get ⇒ Object
GET method.
-
#rest_request_post ⇒ Object
POST method.
-
#rest_request_put ⇒ Object
PUT method.
Constructor Details
#initialize(method, url, opts) ⇒ Requester
Class constructor method
26 27 28 29 30 31 32 33 |
# 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 |
Instance Method Details
#basic_auth(request) ⇒ Object
Set the authentication data
42 43 44 45 46 47 |
# 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) ⇒ Object
Exit with the specified errno and message
36 37 38 39 |
# File 'lib/apireaper/requester.rb', line 36 def exit_with_error(errno, ) puts unless @opts['quiet'] exit errno end |
#format_data(request) ⇒ Object
Select the right data type
50 51 52 53 54 55 |
# 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) ⇒ Object
Set the headers given as argument
58 59 60 61 62 63 64 65 66 |
# 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) ⇒ Object
Set json data as request body
69 70 71 72 |
# File 'lib/apireaper/requester.rb', line 69 def format_json_data(request) request.body = @opts['data'] request end |
#format_www_form_data(request) ⇒ Object
Split the data string into a hash
75 76 77 78 |
# 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) ⇒ Boolean
Check if the data string is a well formated json
81 82 83 84 85 86 |
# File 'lib/apireaper/requester.rb', line 81 def json?(str) JSON.parse(str) true rescue JSON::ParserError false end |
#request ⇒ Object
Select request method
118 119 120 121 122 123 124 125 126 |
# 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 ⇒ Object
DELETE method
89 90 91 92 |
# 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 ⇒ Object
GET method
95 96 97 98 99 100 |
# 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 ⇒ Object
POST method
103 104 105 106 107 108 109 |
# 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 ⇒ Object
PUT method
112 113 114 115 |
# File 'lib/apireaper/requester.rb', line 112 def rest_request_put exit_with_error(3, 'PUT is not yet implemented') # TODO end |