class Telegram::Rabbit::ClientAdapter
Attributes
client[RW]
Public Class Methods
new(opts={})
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 13 def initialize opts={} @options = default_options.merge(opts) @logger = get_option :logger_instance @logger.level = get_option :log_level end
Public Instance Methods
start()
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 20 def start logger.debug "Starting ClientAdapter" @connection = Bunny.new(get_option :bunny).start at_exit { @connection.close } #queues send_queue_name = "#{queue_prefix}.messages" receive_queue_name = "#{queue_prefix}.commands" @channel = @connection.create_channel @send_queue = @channel.queue send_queue_name @receive_queue = @channel.queue receive_queue_name logger.debug "Created queues:" logger.debug " send: #{send_queue_name}" logger.debug " receive: #{receive_queue_name}" @receive_queue.subscribe do |info,metadata,raw_data| data = Marshal.load(raw_data) command, payload = extract_command(data) logger.debug "Received command: #{command}" logger.debug payload.inspect exec_api_command command, payload end logger.debug "Starting bot client" @client = client || Telegram::Bot::Client.new(get_option :bot, :token) @client.run do |bot| logger.debug "Bot client started" bot.listen do |message| logger.debug "Received message:" logger.debug message.inspect send_to_app message end end end
Private Instance Methods
default_options()
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 94 def default_options { log_level: Logger::DEBUG, logger_instance: Logger.new(STDOUT) } end
exec_api_command(command, payload)
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 78 def exec_api_command command, payload # WIP error handling - send errors back @client.api.send command, payload end
extract_command(payload)
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 73 def extract_command payload [ payload[:command], payload[:payload] ] end
get_option(*args)
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 89 def get_option *args (@options || {}).dig *args end
logger()
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 68 def logger @logger end
queue_prefix()
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 84 def queue_prefix "#{get_option :queue_namespace}.#{get_option :bot, :name}" end
send_to_app(message)
click to toggle source
# File lib/telegram/rabbit/client_adapter.rb, line 62 def send_to_app message payload = Marshal.dump(message) @channel.default_exchange.publish payload, routing_key: @send_queue.name end