lib/ruby-agi/command.rb in ruby-agi-1.1.2 vs lib/ruby-agi/command.rb in ruby-agi-2.0.0
- old
+ new
@@ -34,17 +34,23 @@
# secs, all methods need time as an argument are passed as seconds
require 'sync'
require 'ruby-agi/agi.rb'
-require 'ruby-agi/return_status.rb'
require 'ruby-agi/error.rb'
+require 'ruby-agi/return_status.rb'
class AGI
end
+class ReturnStatus
+end
+class Answer < ReturnStatus
+end
+
+
class Command < AGI
def initialize
end
#
@@ -61,11 +67,11 @@
# Command Reference: ANSWER
#
public
def answer
cmd = "ANSWER"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, Answer)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -83,11 +89,11 @@
# Command Reference: SET AUTOHANGUP <time>
#
public
def set_auto_hangup(secs=0)
cmd = "SET AUTOHANGUP #{secs.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SetAutoHangup)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -118,11 +124,11 @@
if channel.nil?
channel = ""
end
cmd = "CHANNEL STATUS #{channel.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, ChannelStatus)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -144,11 +150,11 @@
def exec(application, options=nil)
if options.nil?
options = ""
end
cmd = "EXEC #{application.to_s} #{options.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, Exec)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
@@ -177,11 +183,11 @@
timeout = sanitize_timeout(timeout)
max_digit = sanitize_max_digit(max_digit)
cmd = "GET DATA #{filename.to_s} #{timeout.to_s} #{max_digit.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, WaitForDigits)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -199,11 +205,11 @@
# Command Reference: GET VARIABLE <variablename>
#
public
def get_variable(name)
cmd = "GET VARIABLE #{name.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, GetVariable)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -224,11 +230,11 @@
if channel.nil?
channel = ""
end
cmd = "HANGUP #{channel.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, Hangup)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -243,11 +249,11 @@
# Command Reference: Usage: NOOP
#
public
def noop(msg)
cmd = "NOOP #{msg.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, Noop)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -271,11 +277,11 @@
def receive_char(timeout)
timeout = sanitize_timeout(timeout)
raise(ArgumentError, "timeout need to be positive") if (timeout < 1)
cmd = "RECEIVE CHAR #{timeout.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, ReceiveChar)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -298,11 +304,11 @@
def receive_text(timeout)
timeout = sanitize_timeout(timeout)
raise(ArgumentError, "timeout need to be positive") if (timeout < 1)
cmd = "RECEIVE TEXT #{timeout.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, ReceiveText)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -347,11 +353,11 @@
raise(ArgumentError, "need at least one valid escape digit or timeout need te positive")
end
cmd = "RECORD FILE #{filename} #{format} #{escape_digits} #{timeout}"
cmd = "#{cmd} beep" if beep == true
- rs = exec_command(cmd)
+ rs = exec_command(cmd, RecordFile)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
@@ -375,11 +381,11 @@
public
def say_digits(digit_string, escape_digits=nil)
escape_digits = sanitize_escape_digits(escape_digits)
cmd = "SAY DIGITS #{digit_string.to_s} #{escape_digits}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SayDigits)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -401,11 +407,11 @@
#
public
def say_number(number, escape_digits=nil)
escape_digits = sanitize_escape_digits(escape_digits)
cmd = "SAY NUMBER #{number.to_s} #{escape_digits.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SayNumber)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -427,11 +433,11 @@
#
public
def say_phonetic(string, escape_digits=nil)
escape_digits = sanitize_escape_digits(escape_digits)
cmd = "SAY PHONETIC #{string.to_s} #{escape_digits}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SayPhonetic)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -453,11 +459,11 @@
#
public
def say_time(time=Time.now.to_i, escape_digits='#')
escape_digits = sanitize_escape_digits(escape_digits)
cmd = "SAY TIME #{time.to_s} #{escape_digits.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SayTime)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -477,11 +483,11 @@
# Command Reference: SEND IMAGE <image>
#
public
def send_image(image)
cmd = "SEND IMAGE #{image.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SendImage)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -501,11 +507,11 @@
# Command Reference: SEND TEXT "<text to send>"
#
public
def send_text(text)
cmd = "SEND TEXT #{text.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SendText)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -522,11 +528,11 @@
# Command Reference: SET CALLERID <number>
#
public
def set_caller_id(number)
cmd = "SET CALLERID #{number.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SetCallerID)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -545,11 +551,11 @@
# Command Reference: SET CONTEXT <desired context>
#
public
def set_context(context)
cmd = "SET CONTEXT #{context.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SetContext)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -569,11 +575,11 @@
# Command Reference: SET EXTENSION <new extension>
#
public
def set_extension(extension)
cmd = "SET EXTENSION #{extension.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SetExtension)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -596,11 +602,11 @@
mode = 'ON'
else
mode = 'OFF'
end
cmd = "SET MUSIC #{mode.to_s} #{moh_class.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SetMusic)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -616,11 +622,11 @@
# Command Reference: SET PRIORITY <num>
#
public
def set_priority(priority)
cmd = "SET PRIORITY #{priority.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SetPriority)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -642,11 +648,11 @@
# Command Reference: SET VARIABLE <variablename> <value>
#
public
def set_variable(name, value)
cmd = "SET VARIABLE #{name.to_s} \"#{value.to_s}\""
- rs = exec_command(cmd)
+ rs = exec_command(cmd, SetVariable)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
@@ -676,11 +682,11 @@
def stream_file(filename, escape_digits='#')
escape_digits = sanitize_escape_digits(escape_digits)
cmd = "STREAM FILE #{filename.to_s} #{escape_digits}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, StreamFile)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
@@ -710,11 +716,11 @@
mode = 'ON'
else
mode = 'OFF'
end
cmd = "TDD MODE #{mode.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, TDDMode)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -743,11 +749,11 @@
# Command Reference: VERBOSE <message> [level]
#
public
def verbose(message, level=3)
cmd = "VERBOSE \"#{message.to_s}\" #{level.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, Verbose)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -770,11 +776,11 @@
public
def wait_for_digit(timeout=nil)
timeout = sanitize_timeout(timeout)
cmd = "WAIT FOR DIGIT #{timeout.to_s}"
- rs = exec_command(cmd)
+ rs = exec_command(cmd, WaitForDigit)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
#
@@ -821,26 +827,23 @@
rs = exec_command(cmd)
raise CommandError, rs.to_s if rs.command_error?
return rs
end
- #private
- #def escape(str)
- # rxp = Regexp.new(/\"/)
- # return str.gsub(rxp, '\"')
- #end
-
protected
- def exec_command(cmd)
+ def exec_command(cmd, return_status=nil)
rs = nil
begin
semaphore do
$stderr.puts " -- ruby-agi << #{cmd}" if debug?
$stdout.puts cmd
responses = $stdin.gets
$stderr.puts " -- ruby-agi >> #{responses}" if debug?
- rs = ReturnStatus.new(cmd, responses)
-
+ if return_status.nil?
+ rs = ReturnStatus.new(cmd, responses)
+ else
+ rs = return_status.new(cmd, responses)
+ end
end
rescue Errno::EPIPE
raise HangupError, "Line hung up during command execution!!"
end