class Pechkin::Chanel
Creates object which can send messages to assigned chanels
Attributes
logger[RW]
Public Class Methods
new(connector, channel_list, logger = ::Logger.new(STDOUT))
click to toggle source
# File lib/pechkin/channel.rb, line 6 def initialize(connector, channel_list, logger = ::Logger.new(STDOUT)) @connector = connector @channel_list = channel_list @channel_list = [channel_list] unless channel_list.is_a?(Array) @logger = logger end
Public Instance Methods
send_message(message, data, message_desc)
click to toggle source
# File lib/pechkin/channel.rb, line 13 def send_message(message, data, message_desc) text = message.nil? ? '' : Message.new(data).render(message) message_desc = substitute(data, message_desc) logger.warn 'Resulting text is empty' if text.empty? results = @channel_list.map do |id| @connector.send_message(id, text, message_desc) end process_results(message, results) end
Private Instance Methods
process_results(message, results)
click to toggle source
# File lib/pechkin/channel.rb, line 47 def process_results(message, results) success, error = results.partition { |_chat, code, _body| code < 400 } error.each do |chat, code, body| logger.error "#{message} => #{chat}[HTTP #{code}]: #{body}" end { successful: success.map(&:first), errors: error } end
substitute(data, message_desc)
click to toggle source
# File lib/pechkin/channel.rb, line 28 def substitute(data, message_desc) substitute_recursive(Substitute.new(data), message_desc) end
substitute_recursive(substitutions, object)
click to toggle source
# File lib/pechkin/channel.rb, line 32 def substitute_recursive(substitutions, object) case object when String substitutions.process(object) when Array object.map { |o| substitute_recursive(substitutions, o) } when Hash r = {} object.each { |k, v| r[k] = substitute_recursive(substitutions, v) } r else object end end