class EventStore::Cluster::LeaderStatus::GossipEndpoint::Get

Constants

NonClusterError

Public Class Methods

build(connect_http=nil) click to toggle source
# File lib/event_store/cluster/leader_status/gossip_endpoint/get.rb, line 12
def self.build(connect_http=nil)
  instance = new

  connect_http = EventStore::HTTP::Connect.configure(
    instance,
    connect: connect_http,
    attr_name: :connect_http
  )

  instance
end
call(host=nil, connect_http=nil) click to toggle source
# File lib/event_store/cluster/leader_status/gossip_endpoint/get.rb, line 24
def self.call(host=nil, connect_http=nil)
  instance = build connect_http
  instance.(host)
end

Public Instance Methods

call(host=nil) click to toggle source
# File lib/event_store/cluster/leader_status/gossip_endpoint/get.rb, line 29
def call(host=nil)
  log_attributes = LogAttributes.get self, host: host

  logger.trace { "GET gossip endpoint (#{log_attributes})" }

  connection_telemetry = EventStore::HTTP::Connect.register_telemetry_sink connect_http

  connect_http.(host) do |connection|
    begin
      response = connection.request_get uri_path, http_headers
    rescue Net::ReadTimeout
      response = nil
    end

    if response
      log_attributes << ", StatusCode: #{response.code}, ReasonPhrase: #{response.message}"

      logger.debug { "GET gossip endpoint done (#{log_attributes})" }
      logger.trace { "Data: \n\n#{response.body}" }
    end

    if response.nil? or non_cluster? response
      error_message = "GET gossip endpoint made against non-clustered EventStore (#{log_attributes})"
      logger.error error_message
      raise NonClusterError, error_message
    end

    response = Transform::Read.(response.body, :json, Response)

    return response
  end
end
http_headers() click to toggle source
# File lib/event_store/cluster/leader_status/gossip_endpoint/get.rb, line 66
def http_headers
  { 'Accept' => 'application/json' }
end
non_cluster?(response) click to toggle source
# File lib/event_store/cluster/leader_status/gossip_endpoint/get.rb, line 70
def non_cluster?(response)
  response.code == '408' and response.message == "Server was unable to handle request in time"
end
uri_path() click to toggle source
# File lib/event_store/cluster/leader_status/gossip_endpoint/get.rb, line 62
def uri_path
  '/gossip'
end