adhearsion/punchblock

View on GitHub
lib/punchblock/translator/asterisk/ami_error_converter.rb

Summary

Maintainability
A
25 mins
Test Coverage
# encoding: utf-8

module Punchblock
  module Translator
    class Asterisk
      module AMIErrorConverter
        def self.convert(result = ->(e) { raise ChannelGoneError, e.message } )
          yield
        rescue RubyAMI::Error => e
          case e.message
          when 'No such channel', /Channel (\S+) does not exist./
            result.call e if result
          else
            raise e
          end
        end
      end
    end
  end
end