class Telegram::ClientAdapter

Attributes

bot_name[RW]
connection[RW]
options[RW]
queue_namespace[RW]

Public Instance Methods

api() click to toggle source
# File lib/telegram/client_adapter.rb, line 57
def api
  @api_proxy
end
configure() { |self| ... } click to toggle source
# File lib/telegram/client_adapter.rb, line 26
def configure
  yield self
  self
end
on_message_received(&block) click to toggle source
# File lib/telegram/client_adapter.rb, line 51
def on_message_received &block
  @receive_callbacks ||= []
  @receive_callbacks << block
end
send_command(command, payload) click to toggle source
# File lib/telegram/client_adapter.rb, line 67
def send_command command, payload
  raw_data = Marshal.dump(serialize_command(command,payload))
  @channel.default_exchange.publish raw_data, routing_key: @send_queue.name
end
send_message(payload) click to toggle source
# File lib/telegram/client_adapter.rb, line 62
def send_message payload
  api.send_message payload
end
start() click to toggle source
# File lib/telegram/client_adapter.rb, line 32
def start
  send_queue_name    = "#{queue_prefix}.commands"
  receive_queue_name = "#{queue_prefix}.messages"

  @channel       = connection.create_channel
  @send_queue    = @channel.queue send_queue_name
  @receive_queue = @channel.queue receive_queue_name

  @receive_queue.subscribe do |info,metadata,raw_data|
    data = Marshal.load(raw_data)
    @receive_callbacks.each do |callback|
      callback.call(data)
    end
  end

  @api_proxy = ApiProxy.new(self)
end

Private Instance Methods

queue_prefix() click to toggle source
# File lib/telegram/client_adapter.rb, line 79
def queue_prefix
  "#{queue_namespace}.#{bot_name}"
end
serialize_command(command, payload) click to toggle source
# File lib/telegram/client_adapter.rb, line 75
def serialize_command command, payload
  {command: command, payload: payload}
end