class Futurism::Resolver::Resources
Public Class Methods
new(resource_definitions:, connection:, params:)
click to toggle source
resource definitions are an array of [signed_params, sgid, signed_controller, url, broadcast_each]
# 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
Public Instance Methods
resolve() { |selector, html, broadcast_each| ... }
click to toggle source
# 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
Private Instance Methods
error_renderer()
click to toggle source
# File lib/futurism/resolver/resources.rb, line 38 def error_renderer ErrorRenderer.new end
lookup_resource(resource_definition)
click to toggle source
# File lib/futurism/resolver/resources.rb, line 94 def lookup_resource(resource_definition) message_verifier .verify(resource_definition.signed_params) .deep_transform_values { |value| value.is_a?(String) && value.start_with?("gid://") ? GlobalID::Locator.locate(value) : value } end
renderer_for(resource_definition:)
click to toggle source
# File lib/futurism/resolver/resources.rb, line 83 def renderer_for(resource_definition:) Resolver::Controller::Renderer.for(controller: resource_definition.controller, connection: @connection, url: resource_definition.url, params: @params) end
resolved_models()
click to toggle source
# File lib/futurism/resolver/resources.rb, line 90 def resolved_models GlobalID::Locator.locate_many_signed @resources_with_sgids.map(&:sgid) end