class Kloudless::HTTP
Net::HTTP wrapper
Public Class Methods
delete(path, params: {}, headers: {}, **kwargs)
click to toggle source
# File lib/kloudless/http.rb, line 51 def self.delete(path, params: {}, headers: {}, **kwargs) self.request('delete', path, params: params, headers: headers, **kwargs) end
execute(request, parse_response: true)
click to toggle source
# File lib/kloudless/http.rb, line 55 def self.execute(request, parse_response: true) uri = request.uri @last_request = request headers.each {|k,v| request[k] = v} response = @mock_response || Net::HTTP.start(uri.hostname, uri.port, use_ssl: (uri.scheme == "https")) {|http| http.request(request) } if parse_response json = JSON.parse(response.body) raise Kloudless::Error.from_json(json) if json["error_code"] json else response.body end end
expect(method, returns: nil, args: [], &blk)
click to toggle source
# File lib/kloudless/http.rb, line 88 def self.expect(method, returns: nil, args: [], &blk) begin mock = MiniTest::Mock.new Kloudless.http = mock mock.expect(method, returns, args) blk.call mock.verify ensure Kloudless.http = Kloudless::HTTP end end
get(path, **kwargs)
click to toggle source
# File lib/kloudless/http.rb, line 32 def self.get(path, **kwargs) self.request('get', path, **kwargs) end
headers()
click to toggle source
Public: Headers global to all requests
# File lib/kloudless/http.rb, line 8 def self.headers @headers ||= {} end
last_request()
click to toggle source
Internal: Returns the last Net::HTTP request sent by execute.
# File lib/kloudless/http.rb, line 101 def self.last_request @last_request end
mock_response(response = nil, &blk)
click to toggle source
Internal: Returns `response` the next time execute is invoked for the duration of `blk`. Used for testing.
mock = Struct.new(:body).new("{}") Kloudless::HTTP.mock_response(mock) do Kloudless::HTTP.get "/foo" # returns {} end
# File lib/kloudless/http.rb, line 80 def self.mock_response(response = nil, &blk) @mock_response = response || Struct.new(:body).new("{}") blk.call ensure @mock_response = nil end
patch(path, params: {}, data: {}, headers: {}, **kwargs)
click to toggle source
# File lib/kloudless/http.rb, line 46 def self.patch(path, params: {}, data: {}, headers: {}, **kwargs) self.request('patch', path, params: params, data: data, headers: headers, **kwargs) end
post(path, params: {}, data: {}, headers: {}, **kwargs)
click to toggle source
# File lib/kloudless/http.rb, line 36 def self.post(path, params: {}, data: {}, headers: {}, **kwargs) self.request('post', path, params: params, data: data, headers: headers, **kwargs) end
put(path, params: {}, data: {}, headers: {}, **kwargs)
click to toggle source
# File lib/kloudless/http.rb, line 41 def self.put(path, params: {}, data: {}, headers: {}, **kwargs) self.request('put', path, params: params, data: data, headers: headers, **kwargs) end
request(method, path, params: {}, data: {}, headers: {}, parse_request: true, parse_response: true)
click to toggle source
# File lib/kloudless/http.rb, line 12 def self.request(method, path, params: {}, data: {}, headers: {}, parse_request: true, parse_response: true) uri = URI.parse(Kloudless::API_URL + path) uri.query = URI.encode_www_form(params) if !params.empty? if ['post', 'put', 'patch'].member?(method) headers["Content-Type"] ||= "application/json" end request = Net::HTTP.const_get(method.capitalize).new(uri) request.initialize_http_header(headers) if !data.empty? data = data.to_json if parse_request request.body = data end execute(request, parse_response: parse_response) end