Class: Rubyists::Leopard::NatsServiceDiscovery::Operation::Services

Inherits:
Trailblazer::Operation
  • Object
show all
Includes:
DiscoveryOptions
Defined in:
lib/leopard/nats_service_discovery/operation/services.rb

Overview

Builds service-list summaries from $SRV.INFO responses.

On success, the result exposes :responses and :services.

Instance Method Summary collapse

Methods included from DiscoveryOptions

#operation_options

Instance Method Details

#load_info?(ctx) ⇒ Boolean

Loads raw service info responses for summarization.

Parameters:

  • ctx (Hash)

    Operation context.

Returns:

  • (Boolean)

    Whether service info was loaded.



25
26
27
28
29
30
# File 'lib/leopard/nats_service_discovery/operation/services.rb', line 25

def load_info?(ctx, **)
  result = Info.call(**operation_options(ctx))
  ctx[:error] = result[:error] unless result.success?
  ctx[:responses] = result[:responses]
  result.success?
end

#summarize(ctx, responses:) ⇒ Array<Hash>

Builds compact service summaries from raw info responses.

Parameters:

  • ctx (Hash)

    Operation context.

  • responses (Array<Hash>)

    Parsed $SRV.INFO responses.

Returns:

  • (Array<Hash>)

    Service summary rows.



38
39
40
41
42
43
44
45
46
47
# File 'lib/leopard/nats_service_discovery/operation/services.rb', line 38

def summarize(ctx, responses:, **)
  ctx[:services] = responses.map do |service|
    {
      'name' => service['name'],
      'id' => service['id'],
      'version' => service['version'],
      'endpoints' => Array(service['endpoints']).size,
    }
  end
end