Class: Sinatra::Asterisk::SinatraAgiScript
- Inherits:
-
BaseAgiScript
- Object
- BaseAgiScript
- Sinatra::Asterisk::SinatraAgiScript
- Includes:
- MappingStrategy
- Defined in:
- lib/sinatra/asterisk.rb
Instance Attribute Summary collapse
-
#agi_handlers ⇒ Object
Returns the value of attribute agi_handlers.
-
#sinatra_app ⇒ Object
Returns the value of attribute sinatra_app.
Instance Method Summary collapse
-
#determineScript(request) ⇒ Object
Implements MappingStrategy.
- #eval_in_sinatra(request, channel, &block) ⇒ Object
-
#service(request, channel) ⇒ Object
Implements AgiScript.
Instance Attribute Details
#agi_handlers ⇒ Object
Returns the value of attribute agi_handlers.
21 22 23 |
# File 'lib/sinatra/asterisk.rb', line 21 def agi_handlers @agi_handlers end |
#sinatra_app ⇒ Object
Returns the value of attribute sinatra_app.
21 22 23 |
# File 'lib/sinatra/asterisk.rb', line 21 def sinatra_app @sinatra_app end |
Instance Method Details
#determineScript(request) ⇒ Object
Implements MappingStrategy
24 25 26 |
# File 'lib/sinatra/asterisk.rb', line 24 def determineScript(request) self end |
#eval_in_sinatra(request, channel, &block) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/sinatra/asterisk.rb', line 28 def eval_in_sinatra(request, channel, &block) sinatra = sinatra_app::new! sinatra_eigenclass = (class <<sinatra; self; end) sinatra_eigenclass.class_eval do # TODO: do this with a module ? define_method(:request) { request } define_method(:channel) { channel } end sinatra.instance_eval(&block) end |
#service(request, channel) ⇒ Object
Implements AgiScript
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/sinatra/asterisk.rb', line 41 def service(request, channel) catch(:halt) do block = @agi_handlers.each do |script_pattern, conditions, block| catch :pass do throw :pass unless script_pattern.nil? || script_pattern.match(request.script) throw :halt, eval_in_sinatra(request, channel, &block) end end end end |