class Testrail::Client::Request
Net:HTTP based interface for the Testrail
API @attr url [String] Your Test rail URL @attr user [String] Your testrail user @attr password [String] Your testrail password
Attributes
Public Class Methods
Public Instance Methods
send GET to uri @param uri [String] Test rail API path @return [Hash] Response from testrail API
# File lib/testrail/client.rb, line 32 def send_get(uri) request = _setup_request("GET",uri) _send_request(request) end
send POST to uri @param uri [String] test rail API path @param data [Enumerable] data to be sent in the POST request @return [Hash] Response from testrail API
# File lib/testrail/client.rb, line 40 def send_post(uri, data = nil) request = _setup_request('POST', uri, data) _send_request(request) end
Private Instance Methods
Returns response from API @param request [Net::HTTPRequest] Request
object created on _setup_request
@return [Hash] Response from API
# File lib/testrail/client.rb, line 67 def _send_request(request) conn = Net::HTTP.new(request.uri.host, request.uri.port) if request.uri.scheme == 'https' conn.use_ssl = true conn.verify_mode = OpenSSL::SSL::VERIFY_NONE end response = conn.request(request) if response.body && !response.body.empty? begin result = JSON.parse(response.body) rescue raise APIError.new("Can't parse response \n" + response.body) end else result = {} end if response.code != '200' if result && result.key?('error') error = '"' + result['error'] + '"' else error = 'No additional error message received' end raise APIError.new('TestRail API returned HTTP %s (%s)' % [response.code, error]) end result end
Setup NET::HTTP request object @param method [String] can be POST, GET, PUT, PATCH, or DELETE @param uri [String] test rail API path @param data [Enumerable] data to be sent in request @return [Net::HTTPRequest] Request
object
# File lib/testrail/client.rb, line 51 def _setup_request(method,uri,data = nil) url = URI.parse(@url + uri) STDERR.puts "#{method} #{url}" http_request = eval("Net::HTTP::#{method.capitalize}") request = http_request.new(url) request.add_field('Content-Type', @content_type) request.body = JSON.dump(data) if data.is_a? Hash request.set_form data, 'multipart/form-data' if data.is_a? Array request.basic_auth(@user, @password) request.add_field('x-api-ident', "beta") if @beta return request end