lib/socrates/adapters/slack.rb in socrates-0.1.10 vs lib/socrates/adapters/slack.rb in socrates-0.1.11

- old
+ new

@@ -5,24 +5,39 @@ class Slack def initialize(real_time_client) @real_time_client = real_time_client end - def client_id_from_context(context) - raise ArgumentError, "Context cannot be nil" if context.nil? - raise ArgumentError, "Expected context to respond to :user" unless context.respond_to?(:user) + def client_id_from(context: nil, user: nil) + unless context.nil? + raise ArgumentError, "Expected :context to respond to :user" unless context.respond_to?(:user) + return context.user + end + unless user.nil? + raise ArgumentError, "Expected :user to respond to :id" unless user.respond_to?(:id) + return user.id + end + raise ArgumentError, "Must provide one of :context or :user" + end - context.user + def channel_from(context: nil, user: nil) + unless context.nil? + raise ArgumentError, "Expected :context to respond to :channel" unless context.respond_to?(:channel) + return context.channel + end + unless user.nil? + # raise ArgumentError, "Expected :user to respond to :id" unless user.respond_to?(:id) + return lookup_im_channel(user) + end + raise ArgumentError, "Must provide one of :context or :user" end - def send_message(message, context:) - raise ArgumentError, "Expected context to respond to :channel" unless context.respond_to?(:channel) - - @real_time_client.message(text: message, channel: context.channel) + def send_message(message, channel) + @real_time_client.message(text: message, channel: channel) end - def send_direct_message(message, user, *) + def send_direct_message(message, user) raise ArgumentError, "Expected user to respond to :id" unless user.respond_to?(:id) im_channel = lookup_im_channel(user) @real_time_client.message(text: message, channel: im_channel) @@ -36,10 +51,10 @@ response.members.reject!(&:is_bot?) unless include_bots end end def lookup_email(context:) - raise ArgumentError, "Expected context to respond to :user" unless context.respond_to?(:user) + raise ArgumentError, "Expected :context to respond to :user" unless context.respond_to?(:user) client = @real_time_client.web_client info = client.users_info(user: context.user) info.present? ? info.user.profile.email.presence : nil end