Class: Interfacets::Client::Channels::Audio

Inherits:
Object
  • Object
show all
Includes:
Base
Defined in:
lib/interfacets/client/channels/audio.rb

Defined Under Namespace

Classes: Builder

Instance Attribute Summary

Attributes included from Base

#id

Instance Method Summary collapse

Methods included from Base

#initialize, #type

Methods included from ActiveSupport::Concern

#append_features, #class_methods, extended, #included, #prepend_features, #prepended

Instance Method Details

#builder(stream = "default") ⇒ Object



74
75
76
# File 'lib/interfacets/client/channels/audio.rb', line 74

def builder(stream = "default")
  @builder
end

#handle(event:, entity:) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/interfacets/client/channels/audio.rb', line 78

def handle(event:, entity:, **)
  return unless [
    "loaded",
    "mic-ready",
    "recording-started",
    "recording-stopped",
  ].include?(event.fetch("type"))

  callback_id = event.dig("payload", "id")
  callback = builder.callbacks.delete(callback_id)
  if event["payload"].nil? || event["payload"].empty?
    entity.instance_exec(&callback) if callback
  elsif callback
    entity.instance_exec(event.fetch("payload"), &callback)
  end
end

#prepare(entity) ⇒ Object



70
71
72
# File 'lib/interfacets/client/channels/audio.rb', line 70

def prepare(entity)
  @builder ||= Builder.new
end

#result ⇒ Object



95
96
97
# File 'lib/interfacets/client/channels/audio.rb', line 95

def result
  { streams: { default: @builder.flush_event } }
end