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