class Punchblock::Translator::Asterisk::Component::Asterisk::AMIAction

Attributes

translator[R]

Public Class Methods

new(component_node, translator, ami_client) click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 11
def initialize(component_node, translator, ami_client)
  super component_node, nil
  @translator, @ami_client = translator, ami_client
end

Public Instance Methods

execute() click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 16
def execute
  send_ref
  response = send_action
  final_event = send_events response
  send_complete_event success_reason(response, final_event)
rescue RubyAMI::Error => e
  send_complete_event error_reason(e)
end

Private Instance Methods

action_headers() click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 56
def action_headers
  headers = {}
  @component_node.params.each_pair do |key, value|
    headers[key.to_s.capitalize] = value
  end
  headers
end
error_reason(response) click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 31
def error_reason(response)
  Punchblock::Event::Complete::Error.new details: response.message
end
pb_event_from_ami_event(ami_event) click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 50
def pb_event_from_ami_event(ami_event)
  headers = ami_event.headers
  headers.delete 'ActionID'
  Event::Asterisk::AMI::Event.new name: ami_event.name, headers: headers
end
send_action() click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 27
def send_action
  @ami_client.send_action @component_node.name, action_headers
end
send_events(response) click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 42
def send_events(response)
  final_event = response.events.pop
  response.events.each do |e|
    send_event pb_event_from_ami_event(e)
  end
  final_event
end
success_reason(response, final_event = nil) click to toggle source
# File lib/punchblock/translator/asterisk/component/asterisk/ami_action.rb, line 35
def success_reason(response, final_event = nil)
  headers = response.headers
  headers.merge! final_event.headers if final_event
  headers.delete 'ActionID'
  Punchblock::Component::Asterisk::AMI::Action::Complete::Success.new message: headers.delete('Message'), text_body: response.text_body, headers: headers
end