module Truework::HTTPRequest
Constants
- EXCEPTION_MAP
Public Instance Methods
delete(path, params = {})
click to toggle source
# File lib/truework/http_request.rb, line 24 def delete(path, params = {}) request(:delete, path, params) end
get(path, params = {})
click to toggle source
# File lib/truework/http_request.rb, line 12 def get(path, params = {}) request(:get, path, params) end
post(path, params = {})
click to toggle source
# File lib/truework/http_request.rb, line 16 def post(path, params = {}) request(:post, path, params) end
put(path, params = {})
click to toggle source
# File lib/truework/http_request.rb, line 20 def put(path, params = {}) request(:put, path, params) end
request(method, path, params = {})
click to toggle source
# File lib/truework/http_request.rb, line 28 def request(method, path, params = {}) uri = URI.parse("#{Truework.api_base}#{path}") request = build_request(method, uri, params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' response = http.request(request) handle_errors(response) response end
Private Instance Methods
build_request(method, uri, params)
click to toggle source
rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
# File lib/truework/http_request.rb, line 79 def build_request(method, uri, params) klass = case method when :get Net::HTTP::Get when :post Net::HTTP::Post when :put Net::HTTP::Put when :delete Net::HTTP::Delete end case method when :get, :delete uri.query = URI.encode_www_form(params) if params && !params.empty? req = klass.new(uri.request_uri) when :post, :put req = klass.new(uri.request_uri) req.body = JSON.generate(params) unless params.empty? end req['Content-Type'] = 'application/json' req['Accept'] = "application/json#{"; version=#{Truework.api_version}" if Truework.api_version}" req['User-Agent'] = "Truework Ruby SDK #{Truework::VERSION};"\ "#{RUBY_PLATFORM};#{RUBY_ENGINE};#{RUBY_VERSION} p#{RUBY_PATCHLEVEL}" req['Authorization'] = "Bearer #{Truework.api_key}" req end
error_message_from_response(response)
click to toggle source
# File lib/truework/http_request.rb, line 68 def error_message_from_response(response) body = response.body json = JSON.parse(body) if body && body.strip != '' return json['error'] if json&.key?('error') body rescue JSON::ParserError body end
handle_errors(response)
click to toggle source
# File lib/truework/http_request.rb, line 43 def handle_errors(response) case response when Net::HTTPSuccess response else EXCEPTION_MAP.each do |response_class, exception_class| raise exception_class, error_message_from_response(response) if response.is_a?(response_class) end raise Truework::UnexpectedHTTPException, "#{response.code} #{response.body}" end end