Sha256: 0d97799864e76f57e4aaa53a9e5d27eb562eba44ad7035217ab8226a157732de

Contents?: true

Size: 1.76 KB

Versions: 16

Compression:

Stored size: 1.76 KB

Contents

# encoding: utf-8

module Punchblock
  class Event
    class Complete < Event
      register :complete, :ext

      def reason
        element = find_first '*'
        return unless element
        RayoNode.import(element).tap do |reason|
          reason.target_call_id = target_call_id
          reason.component_id = component_id
        end
      end

      def reason=(other)
        children.map(&:remove)
        self << other
      end

      def recording
        element = find_first('//ns:recording', :ns => RAYO_NAMESPACES[:record_complete])
        return unless element
        RayoNode.import(element).tap do |recording|
          recording.target_call_id = target_call_id
          recording.component_id = component_id
        end
      end

      def inspect_attributes # :nodoc:
        [:reason, :recording] + super
      end

      class Reason < RayoNode
        def self.new(options = {})
          super().tap do |new_node|
            case options
            when Nokogiri::XML::Node
              new_node.inherit options
            when Hash
              options.each_pair { |k,v| new_node.send :"#{k}=", v }
            end
          end
        end

        def name
          super.to_sym
        end

        def inspect_attributes # :nodoc:
          [:name] + super
        end
      end

      class Stop < Reason
        register :stop, :ext_complete
      end

      class Hangup < Reason
        register :hangup, :ext_complete
      end

      class Error < Reason
        register :error, :ext_complete

        def details
          text.strip
        end

        def details=(other)
          self << other
        end

        def inspect_attributes # :nodoc:
          [:details] + super
        end
      end
    end # Complete
  end
end # Punchblock

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
punchblock-1.9.4 lib/punchblock/event/complete.rb
punchblock-1.9.3 lib/punchblock/event/complete.rb
punchblock-1.9.2 lib/punchblock/event/complete.rb
punchblock-1.9.1 lib/punchblock/event/complete.rb
punchblock-1.9.0 lib/punchblock/event/complete.rb
punchblock-1.8.2 lib/punchblock/event/complete.rb
punchblock-1.8.1 lib/punchblock/event/complete.rb
punchblock-1.8.0 lib/punchblock/event/complete.rb
punchblock-1.7.1 lib/punchblock/event/complete.rb
punchblock-1.7.0 lib/punchblock/event/complete.rb
punchblock-1.6.1 lib/punchblock/event/complete.rb
punchblock-1.6.0 lib/punchblock/event/complete.rb
punchblock-1.5.3 lib/punchblock/event/complete.rb
punchblock-1.5.2 lib/punchblock/event/complete.rb
punchblock-1.5.1 lib/punchblock/event/complete.rb
punchblock-1.5.0 lib/punchblock/event/complete.rb