class Stargate::Client::Protocol::HTTP
Public Instance Methods
call(klass, method, *args)
click to toggle source
# File lib/stargate/client/protocol/http.rb, line 18 def call(klass, method, *args) log.debug("Executing remote method", class: klass.remote_name, method: method) request_options = {} request_options[:payload] = codec.encode(args) request_options[:timeout] = options[:timeout] if options[:timeout] request_headers = { 'Content-Type' => codec.content_type } request("#{klass.remote_name}.#{method}", 'POST', request_options, request_headers) do |response| data = codec.decode(response.body.to_s) raise RemoteExecutionError.from_hash(data) unless response.code == 200 unpack_payload(data) end end
fetch_definitions()
click to toggle source
# File lib/stargate/client/protocol/http.rb, line 7 def fetch_definitions log.debug("Loading remote definitions", url: safe_uri.to_s) request('definitions', 'GET') do |response| raise DirectivesFetchError, "Unable to fetch directives from #{safe_uri.to_s}" unless response.code == 200 data = codec.decode(response.body.to_s) definitions = data['definitions'] or return [] unpack_definitions(definitions) end end
Private Instance Methods
request(path, method, options = {}, headers = {}, &block)
click to toggle source
# File lib/stargate/client/protocol/http.rb, line 35 def request(path, method, options = {}, headers = {}, &block) options = { url: File.join(uri.to_s, path), method: method, headers: { 'Accept' => codec.content_type, 'User-Agent' => 'Stargate' }.merge(headers) }.merge(options) RestClient::Request.execute(options, &block) end