class Riddler::UseCases::ShowSlug
Attributes
content_definition_repo[R]
context_director[R]
interaction[R]
interaction_class[R]
interaction_repo[R]
slug[R]
slug_name[R]
slug_repo[R]
Public Class Methods
new(content_definition_repo:, slug_repo:, interaction_repo:, interaction_class:, slug_name:, params: {})
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 7 def initialize content_definition_repo:, slug_repo:, interaction_repo:, interaction_class:, slug_name:, params: {}, headers: {} @content_definition_repo = content_definition_repo @slug_repo = slug_repo @interaction_repo = interaction_repo @interaction_class = interaction_class @context_director = ::Riddler::ContextDirector.new params: params, headers: headers @slug_name = slug_name @slug = lookup_slug end
Public Instance Methods
completed?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 35 def completed? return false unless slug_defines_identity? find_interaction return false if @interaction.nil? @interaction.status == "COMPLETED" end
dismissed?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 28 def dismissed? return false unless slug_defines_identity? find_interaction return false if @interaction.nil? @interaction.status == "DISMISSED" end
excluded?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 46 def excluded? definition_use_case.excluded? end
exists?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 19 def exists? !slug.nil? end
paused?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 23 def paused? return true if slug.nil? slug.status == "PAUSED" end
process()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 50 def process find_interaction || create_interaction context.assign "interaction", interaction.to_hash content_hash = definition_use_case.process.merge \ interaction_id: interaction.id, dismiss_url: "/interactions/#{interaction.id}/dismiss" interaction.content_type = content_hash[:content_type] interaction.content_id = content_hash[:id] interaction_repo.update interaction content_hash end
targeted?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 42 def targeted? slug_targeted? end
Private Instance Methods
blank_interaction_identity()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 108 def blank_interaction_identity @blank_interaction_identity ||= ::Riddler::Context.new.render slug.interaction_identity end
context()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 95 def context context_director.context end
create_interaction()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 75 def create_interaction @interaction = interaction_class.new \ slug_name: slug.name, slug_id: slug.id, status: "ACTIVE", content_definition_id: slug.content_definition_id, identifiers: context.ids @interaction.identity = identity if request_is_unique? interaction_repo.create interaction end
definition_use_case()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 88 def definition_use_case @definition_use_case ||= ShowContentDefinition.new \ content_definition_repo: content_definition_repo, content_definition_id: slug.content_definition_id, context_director: context_director end
find_interaction()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 68 def find_interaction return nil unless request_is_unique? @interaction ||= interaction_repo.last_by slug_id: slug.id, identity: identity end
identity()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 104 def identity @identity ||= simple_context.render slug.interaction_identity end
interaction_identity_is_blank?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 116 def interaction_identity_is_blank? identity == blank_interaction_identity end
lookup_slug()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 124 def lookup_slug slug_repo.find_by name: slug_name end
request_is_unique?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 112 def request_is_unique? slug_defines_identity? && !interaction_identity_is_blank? end
simple_context()
click to toggle source
Only has IDs extracted - context builders have not been processed
# File lib/riddler/use_cases/show_slug.rb, line 100 def simple_context context_director.simple_context end
slug_defines_identity?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 120 def slug_defines_identity? !(slug.interaction_identity.nil? || slug.interaction_identity == "") end
slug_has_target_predicate?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 133 def slug_has_target_predicate? slug.target_predicate.to_s.strip != "" end
slug_targeted?()
click to toggle source
# File lib/riddler/use_cases/show_slug.rb, line 128 def slug_targeted? return true unless slug_has_target_predicate? Predicator.evaluate slug.target_predicate, context.to_liquid end