module Fleet::Request
Private Instance Methods
escape_path(path)
click to toggle source
# File lib/fleet/request.rb, line 60 def escape_path(path) URI.escape(path).gsub(/@/, '%40') end
perform_request(connection, method, path, options)
click to toggle source
# File lib/fleet/request.rb, line 31 def perform_request(connection, method, path, options) req = { path: escape_path(path), } case method when :get req[:query] = options when :put req[:headers] = { 'Content-Type' => 'application/json' } req[:body] = ::JSON.dump(options) end resp = connection.send(method, req) if (400..600).include?(resp.status) raise_error(resp) end case method when :get ::JSON.parse(resp.body) else true end rescue Excon::Errors::SocketError => ex raise Fleet::ConnectionError, ex.message end
raise_error(resp)
click to toggle source
# File lib/fleet/request.rb, line 64 def raise_error(resp) error = JSON.parse(resp.body)['error'] class_name = Fleet::Error::HTTP_CODE_MAP.fetch(resp.status, 'Error') fail Fleet.const_get(class_name).new( error['message'], error['code']) end
request(connection, method, path, options)
click to toggle source
# File lib/fleet/request.rb, line 15 def request(connection, method, path, options) response = perform_request(connection, method, path, options) return response if method != :get next_page_token = response.delete('nextPageToken') while next_page_token next_options = options.merge('nextPageToken' => next_page_token) next_response = perform_request(connection, method, path, next_options) next_page_token = next_response.delete('nextPageToken') next_response.each { |k, v| response[k] += v } end response end