Class: Rasti::App::Facade

Inherits:
Object
  • Object
show all
Defined in:
lib/rasti/app/facade.rb

Defined Under Namespace

Classes: InteractionSpecification, SynchronicInteractionsFactory, UndefinedInteraction

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(namespace) ⇒ Facade

Returns a new instance of Facade.



72
73
74
75
76
77
# File 'lib/rasti/app/facade.rb', line 72

def initialize(namespace)
  @interactions = Utils.classes_in(namespace, Interaction).each_with_object({}) do |interaction, hash|
    specificaiton = InteractionSpecification.new interaction, namespace
    hash[specificaiton.name] = specificaiton
  end
end

Instance Attribute Details

#interactionsObject (readonly)

Returns the value of attribute interactions.



70
71
72
# File 'lib/rasti/app/facade.rb', line 70

def interactions
  @interactions
end

Instance Method Details

#asynchronic_interactionsObject



102
103
104
# File 'lib/rasti/app/facade.rb', line 102

def asynchronic_interactions
  interactions.select { |k,v| v.asynchronic? }
end

#build_form(name, params = {}) ⇒ Object



79
80
81
# File 'lib/rasti/app/facade.rb', line 79

def build_form(name, params={})
  interaction_class(name).build_form params
end

#call(name, environment, session, form) ⇒ Object



83
84
85
# File 'lib/rasti/app/facade.rb', line 83

def call(name, environment, session, form)
  interaction_class(name).new(environment, session).call(form)
end

#enqueue(name, session, form, options = {}) ⇒ Object



87
88
89
90
91
92
93
94
95
96
# File 'lib/rasti/app/facade.rb', line 87

def enqueue(name, session, form, options={})
  interaction = interaction_class name
  Job.enqueue queue:        options[:queue] || Asynchronic.default_queue,
              id:           options[:job_id],
              wrapper:      options[:job_wrapper],
              alias:        interaction,
              interaction:  interaction,
              session:      session,
              params:       form.to_h
end

#permissionsObject



106
107
108
# File 'lib/rasti/app/facade.rb', line 106

def permissions
  interactions.values.map(&:permission).sort
end

#synchronic_interactionsObject



98
99
100
# File 'lib/rasti/app/facade.rb', line 98

def synchronic_interactions
  interactions.select { |k,v| v.synchronic? }
end

#synchronic_interactions_factory(environment, session) ⇒ Object



115
116
117
# File 'lib/rasti/app/facade.rb', line 115

def synchronic_interactions_factory(environment, session)
  SynchronicInteractionsFactory.new self, environment, session
end

#valid_permission?(permission) ⇒ Boolean

Returns:

  • (Boolean)


110
111
112
113
# File 'lib/rasti/app/facade.rb', line 110

def valid_permission?(permission)
  permission = Permission.new permission
  permissions.any? { |p| permission.include? p }
end