11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/nx/http.rb', line 11
def self.request(in_method, in_url, in_data = {}, in_options = {})
default_options = { data_type: :urlencoded, response_type: :raw }
options = default_options.merge(in_options)
uri = URI(in_url)
method = in_method.downcase
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
method_class = Net::HTTP.const_get method.capitalize
request = method_class.new(uri)
request.content_type = ContentType.const_get(options[:data_type].upcase)
if method == "get"
uri.query = URI.encode_www_form(in_data)
else
options.each do |key, value|
request[key] = value
end
request.body = DataTransform.send(options[:data_type], in_data)
end
yield(http, request, uri, method) if block_given?
begin
response = http.request(request)
options[:response_type] == :json ? JSON.parse(response) : response
rescue => exception
raise exception
end
end
|