Class: Futurism::Resolver::Resources

Inherits:
Object
  • Object
show all
Includes:
MessageVerifier
Defined in:
lib/futurism/resolver/resources.rb

Defined Under Namespace

Classes: ErrorRenderer, ResourceDefinition

Instance Method Summary collapse

Methods included from MessageVerifier

message_verifier, #message_verifier

Constructor Details

#initialize(resource_definitions:, connection:, params:) ⇒ Resources

resource definitions are an array of [signed_params, sgid, signed_controller, url, broadcast_each]



7
8
9
10
11
12
13
# File 'lib/futurism/resolver/resources.rb', line 7

def initialize(resource_definitions:, connection:, params:)
  @connection = connection
  @params = params
  @resources_with_sgids, @resources_without_sgids = resource_definitions
    .partition { |signed_params, sgid, *| sgid.present? }
    .map { |partition| partition.map { |definition| ResourceDefinition.new(definition) } }
end

Instance Method Details

#resolveObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/futurism/resolver/resources.rb', line 15

def resolve
  resolved_models.zip(@resources_with_sgids).each do |model, resource_definition|
    html = renderer_for(resource_definition: resource_definition).render(model)

    yield(resource_definition.selector, html, resource_definition.broadcast_each)
  end

  @resources_without_sgids.each do |resource_definition|
    resource = lookup_resource(resource_definition)
    renderer = renderer_for(resource_definition: resource_definition)
    html =
      begin
        renderer.render(resource)
      rescue => exception
        error_renderer.render(exception)
      end

    yield(resource_definition.selector, html, resource_definition.broadcast_each)
  end
end