From 48f8b492eabe98383fb0f15a4dc447aa88308d0c Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Wed, 11 Mar 2020 00:02:28 -0700 Subject: [PATCH 01/10] wave one one bullet point done working on the second. Created a bunch of files. --- lib/channel.rb | 10 ++++++++++ lib/recipient.rb | 10 ++++++++++ lib/slack.rb | 45 +++++++++++++++++++++++++++++++++++------- lib/user.rb | 10 ++++++++++ lib/workspace.rb | 33 +++++++++++++++++++++++++++++++ test/channel_test.rb | 13 ++++++++++++ test/recipient_test.rb | 13 ++++++++++++ test/slack_test.rb | 13 ++++++++++++ test/test_helper.rb | 10 ++++++++++ test/user_test.rb | 13 ++++++++++++ test/workspace_test.rb | 13 ++++++++++++ 11 files changed, 176 insertions(+), 7 deletions(-) create mode 100644 lib/channel.rb create mode 100644 lib/recipient.rb create mode 100644 lib/user.rb create mode 100644 lib/workspace.rb create mode 100644 test/channel_test.rb create mode 100644 test/recipient_test.rb create mode 100644 test/slack_test.rb create mode 100644 test/user_test.rb create mode 100644 test/workspace_test.rb diff --git a/lib/channel.rb b/lib/channel.rb new file mode 100644 index 00000000..668334cf --- /dev/null +++ b/lib/channel.rb @@ -0,0 +1,10 @@ +module Slack + class Channel + attr_reader + def initialize + + end + + + end +end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb new file mode 100644 index 00000000..36b0ca98 --- /dev/null +++ b/lib/recipient.rb @@ -0,0 +1,10 @@ +module Slack + class Recipient + attr_reader + def initialize + + end + + + end +end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 8a0b659b..deeb4063 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,12 +1,43 @@ #!/usr/bin/env ruby +require 'dotenv' +require 'httparty' +require_relative 'workspace' -def main - puts "Welcome to the Ada Slack CLI!" - workspace = Workspace.new +Dotenv.load - # TODO project +KEY = ENV["SLACK_TOKEN"] +#module Slack + def main + puts "Welcome to the Ada Slack CLI!" + workspace = Workspace.new + # TODO project + puts "Your workspace has #{workspace.num_of_channels} channels." + puts "Your workspace has #{workspace.num_of_users} users." + + options - puts "Thank you for using the Ada Slack CLI" -end + puts "Thank you for using the Ada Slack CLI" -main if __FILE__ == $PROGRAM_NAME \ No newline at end of file + end + + def options + puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- quit" + user_input = gets.chomp.downcase + valid_inputs = ["list users", "list channels", "quit"] + + until valid_inputs.include?(user_input) + puts "Please type a valid response :\n- list users\n- list channels\n- quit" + user_input = gets.chomp.downcase + end + + case user_input + when "list users" + when "list channels" + when "quit" + return + end + end + + main if __FILE__ == $PROGRAM_NAME + +#end diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 00000000..a15167f6 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,10 @@ +module Slack + class User + attr_reader + def initialize + + end + + + end +end \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb new file mode 100644 index 00000000..d99e6fb9 --- /dev/null +++ b/lib/workspace.rb @@ -0,0 +1,33 @@ + +require 'dotenv' +require 'httparty' +Dotenv.load + +KEY = ENV["SLACK_TOKEN"] + +#module Slack + class Workspace + attr_reader :channels, :users + def initialize + @channels = [] + @users = [] + end + + def num_of_channels + channels_url = "https://slack.com/api/conversations.list" + response = HTTParty.get(channels_url, query: {token: KEY}) + number = response["channels"].count + return number + end + + def num_of_users + users_url = "https://slack.com/api/users.list" + response = HTTParty.get(users_url, query: {token: KEY}) + number = response["members"].count + return number + end + + + end + +#end \ No newline at end of file diff --git a/test/channel_test.rb b/test/channel_test.rb new file mode 100644 index 00000000..ae47430e --- /dev/null +++ b/test/channel_test.rb @@ -0,0 +1,13 @@ +require_relative "test_helper" + +xdescribe "" do + it "" do + + + end + + it "" do + + + end +end diff --git a/test/recipient_test.rb b/test/recipient_test.rb new file mode 100644 index 00000000..9eaad2d3 --- /dev/null +++ b/test/recipient_test.rb @@ -0,0 +1,13 @@ +require_relative "test_helper" + +xdescribe "" do + it "" do + + + end + + it "" do + + + end +end diff --git a/test/slack_test.rb b/test/slack_test.rb new file mode 100644 index 00000000..c70c1676 --- /dev/null +++ b/test/slack_test.rb @@ -0,0 +1,13 @@ +require_relative "test_helper" + +xdescribe "" do + it "" do + + + end + + it "" do + + + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 1fcf2bab..8d14d4de 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,6 +8,9 @@ require 'minitest/reporters' require 'minitest/skip_dsl' require 'vcr' +require "webmock/minitest" #added +require "dotenv" #added +Dotenv.load #added Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new @@ -27,3 +30,10 @@ # Don't leave our token lying around in a cassette file. end + +require_relative "../lib/workspace.rb" +require_relative "../lib/slack.rb" +require_relative "../lib/user.rb" +require_relative "../lib/channel.rb" +require_relative "../lib/recipient.rb" + diff --git a/test/user_test.rb b/test/user_test.rb new file mode 100644 index 00000000..c70c1676 --- /dev/null +++ b/test/user_test.rb @@ -0,0 +1,13 @@ +require_relative "test_helper" + +xdescribe "" do + it "" do + + + end + + it "" do + + + end +end diff --git a/test/workspace_test.rb b/test/workspace_test.rb new file mode 100644 index 00000000..7f4dcefc --- /dev/null +++ b/test/workspace_test.rb @@ -0,0 +1,13 @@ +require_relative "test_helper" + +xdescribe "" do + it "" do + + + end + + it "" do + + + end +end From 0cb83cacc23bb1f91b995cae8cbdf8cd6c30740f Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Wed, 11 Mar 2020 22:16:58 -0700 Subject: [PATCH 02/10] wave one done but needs more tests --- lib/recipient.rb | 15 +- lib/slack.rb | 24 ++- lib/user.rb | 6 +- lib/workspace.rb | 40 +++- test/cassettes/channels.yml | 174 +++++++++++++++++ test/cassettes/users.yml | 174 +++++++++++++++++ test/cassettes/users_list.yml | 345 ++++++++++++++++++++++++++++++++++ test/test_helper.rb | 22 ++- test/workspace_test.rb | 42 ++++- 9 files changed, 797 insertions(+), 45 deletions(-) create mode 100644 test/cassettes/channels.yml create mode 100644 test/cassettes/users.yml create mode 100644 test/cassettes/users_list.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index 36b0ca98..fed2eb4e 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,10 +1,11 @@ -module Slack - class Recipient - attr_reader - def initialize +# module Slack +# class Recipient +# attr_reader +# def initialize - end +# end + - end -end \ No newline at end of file +# end +# end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index deeb4063..0bcb53d1 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,17 +1,14 @@ #!/usr/bin/env ruby -require 'dotenv' require 'httparty' require_relative 'workspace' -Dotenv.load - -KEY = ENV["SLACK_TOKEN"] #module Slack def main puts "Welcome to the Ada Slack CLI!" workspace = Workspace.new # TODO project puts "Your workspace has #{workspace.num_of_channels} channels." + puts "Your workspace has #{workspace.num_of_users} users." options @@ -21,7 +18,7 @@ def main end def options - puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- quit" + puts "What would you like to do? Please type one of the following:\n-1- list users\n-2- list channels\n-6- quit" user_input = gets.chomp.downcase valid_inputs = ["list users", "list channels", "quit"] @@ -31,13 +28,20 @@ def options end case user_input - when "list users" - when "list channels" - when "quit" + when "list users", 1 + workspace = Workspace.new #how do i get my code so i dont need this? + workspace.list_users(workspace) + options + when "list channels", 2 + workspace = Workspace.new + workspace.list_channels(workspace) + options + + when "quit", 6 return end end +#end - main if __FILE__ == $PROGRAM_NAME -#end +main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb index a15167f6..daa43e15 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,3 +1,5 @@ +require 'table_print' + module Slack class User attr_reader @@ -5,6 +7,6 @@ def initialize end - + end -end \ No newline at end of file +end diff --git a/lib/workspace.rb b/lib/workspace.rb index d99e6fb9..1cdd9257 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,4 +1,4 @@ - +require 'table_print' require 'dotenv' require 'httparty' Dotenv.load @@ -9,24 +9,44 @@ class Workspace attr_reader :channels, :users def initialize - @channels = [] - @users = [] + channels_url = "https://slack.com/api/conversations.list" + @channels = HTTParty.get(channels_url, query: {token: KEY}) + + users_url = "https://slack.com/api/users.list" + @users = HTTParty.get(users_url, query: {token: KEY}) end def num_of_channels - channels_url = "https://slack.com/api/conversations.list" - response = HTTParty.get(channels_url, query: {token: KEY}) - number = response["channels"].count + number = @channels["channels"].count return number end def num_of_users - users_url = "https://slack.com/api/users.list" - response = HTTParty.get(users_url, query: {token: KEY}) - number = response["members"].count + number = users["members"].count return number end - + + def list_users(workspace) + users = workspace.users + i = 1 + + users["members"].each do |member| + puts "User number #{i}'s username is #{member["name"]}, their name is #{member["real_name"]}, and id is #{member["id"]}." + i += 1 + end + end + + def list_channels(workspace) + channels = workspace.channels + i = 1 + + channels["channels"].each do |channel| + puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." + i += 1 + end + end + + end diff --git a/test/cassettes/channels.yml b/test/cassettes/channels.yml new file mode 100644 index 00000000..d9ca240a --- /dev/null +++ b/test/cassettes/channels.yml @@ -0,0 +1,174 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '757' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 02:56:54 GMT + Server: + - Apache + X-Slack-Req-Id: + - 28d7aa2d674a3c824cab445256343083 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-xy1y + X-Cache: + - Miss from cloudfront + Via: + - 1.1 d0387b833e3ca8cb748a1296b4b4bf2b.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - xtA05r6yeYVDGdULeE9BINMRR7u_TCfbMZ67xH47RJ1Ze09MUZCtig== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica + is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I + am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 02:56:54 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1689' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 02:56:55 GMT + Server: + - Apache + X-Slack-Req-Id: + - 55c7886dd1b07c09d95a3cfe7df3102d + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-xwyh + X-Cache: + - Miss from cloudfront + Via: + - 1.1 60b744e5b364d04abea9fa6686121242.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - tBIQY1OHPn6dpzGNo-Yn2lTsBNBRx2T8tj8p112vYR0BpOm1CSqq_g== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1583981815,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 02:56:55 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/users.yml b/test/cassettes/users.yml new file mode 100644 index 00000000..92874516 --- /dev/null +++ b/test/cassettes/users.yml @@ -0,0 +1,174 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '757' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 00:21:52 GMT + Server: + - Apache + X-Slack-Req-Id: + - 1365e815b314b8c772d7b73802d3aac2 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-zgfx + X-Cache: + - Miss from cloudfront + Via: + - 1.1 556b99c6be8d7078b9f067347c62df6b.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - z8IFHb8Q3Bss8FLCqlwKZjWa2oUuIOHNwe3pjqwZiUbbtE2z9r419A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica + is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I + am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 00:21:52 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1689' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 00:21:52 GMT + Server: + - Apache + X-Slack-Req-Id: + - '09eece0cfeb0020813897f2a5edd6df1' + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-qgdw + X-Cache: + - Miss from cloudfront + Via: + - 1.1 3cd7af07832481c336aa1c93c9b4a6fe.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - dCFIf6USCqmIf5UwfLJze6_r8i4vMaFzjFnhd4yprJXhtcNbyBW6aQ== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1583972512,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 00:21:52 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/users_list.yml b/test/cassettes/users_list.yml new file mode 100644 index 00000000..50d6fa25 --- /dev/null +++ b/test/cassettes/users_list.yml @@ -0,0 +1,345 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '757' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 04:47:55 GMT + Server: + - Apache + X-Slack-Req-Id: + - e2add19459e389f3ef2c9a74cd525235 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-qsab + X-Cache: + - Miss from cloudfront + Via: + - 1.1 b2f9564ebf9c745cc2ceae96d434977e.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - BU7XNcA_p53ChfIh8rdmyTQX7U4xGDHfKoM-nVhRamuWagFT6dbdug== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica + is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I + am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 04:47:55 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1689' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 04:47:55 GMT + Server: + - Apache + X-Slack-Req-Id: + - cd28d83cec18956be104d8038c1a087b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-kirk + X-Cache: + - Miss from cloudfront + Via: + - 1.1 be082a2326b7d49643607b097f1e7181.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C2 + X-Amz-Cf-Id: + - CR2noNCnpXJ7z57s_sVCcv-drdQmzghuyEmFo1plqyMbXJXK1Z7uCg== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1583988475,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 04:47:55 GMT +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '757' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 05:04:50 GMT + Server: + - Apache + X-Slack-Req-Id: + - 05b6d8749fcfeb0adbcbd54ee4c79bf7 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-23wl + X-Cache: + - Miss from cloudfront + Via: + - 1.1 4d8620b80ebe37d366388e117039aa8e.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - ZkjCsMNKg5Z1xtDA8dPxicoF78ek8PV5ts4M9UQcrj90ChfaQ-lE4A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica + is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I + am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 05:04:50 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1689' + Connection: + - keep-alive + Date: + - Thu, 12 Mar 2020 05:04:50 GMT + Server: + - Apache + X-Slack-Req-Id: + - a30cc0a2f67132f14950dc98a572ce26 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-d2dx + X-Cache: + - Miss from cloudfront + Via: + - 1.1 4d8620b80ebe37d366388e117039aa8e.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - SEA19-C1 + X-Amz-Cf-Id: + - WVd3nGh9golMKKL7heIcQXUrOfsA888gmXRSxVV5m-QTUa0TYx0-cA== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1583989490,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Thu, 12 Mar 2020 05:04:50 GMT +recorded_with: VCR 5.1.0 diff --git a/test/test_helper.rb b/test/test_helper.rb index 8d14d4de..b93121a9 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -7,13 +7,19 @@ require 'minitest/autorun' require 'minitest/reporters' require 'minitest/skip_dsl' -require 'vcr' require "webmock/minitest" #added -require "dotenv" #added -Dotenv.load #added +require 'vcr' +# require "dotenv" #added +# Dotenv.load #added Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new +require_relative "../lib/workspace.rb" +require_relative "../lib/slack.rb" +require_relative "../lib/user.rb" +require_relative "../lib/channel.rb" +require_relative "../lib/recipient.rb" + VCR.configure do |config| config.cassette_library_dir = "test/cassettes" config.hook_into :webmock @@ -26,14 +32,12 @@ :record => :new_episodes, # record new data when we don't have it yet :match_requests_on => [:method, :uri, :body], # The http method, URI and body of a request all need to match } - + config.filter_sensitive_data("SLACK_TOKEN") do + ENV["SLACK_TOKEN"] + end # Don't leave our token lying around in a cassette file. end -require_relative "../lib/workspace.rb" -require_relative "../lib/slack.rb" -require_relative "../lib/user.rb" -require_relative "../lib/channel.rb" -require_relative "../lib/recipient.rb" + diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 7f4dcefc..ffedbdeb 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,13 +1,41 @@ require_relative "test_helper" -xdescribe "" do - it "" do - - - end +require 'httparty' + - it "" do +describe "getting number of channels" do + + it "can get number of channels" do + VCR.use_cassette("channels") do + response = Workspace.new + + expect(response.channels).wont_be_nil + expect(response.num_of_channels).must_equal 5 + end + end - end +end + +describe "getting number of users" do + + it "can get number of users" do + VCR.use_cassette("users") do + response = Workspace.new + + expect(response.users).wont_be_nil + expect(response.num_of_users).must_equal 8 + end + end +end + +xdescribe "listing users" do + + it "outputs list of users" do + VCR.use_cassette("users.list") do + response = Workspace.new + + expect(SWorkspace.new.list_users(response)).must_be_kind_of String + end + end end From 86c08e3cb669228d97f9a79a8754a94d4314e38c Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Thu, 12 Mar 2020 17:30:17 -0700 Subject: [PATCH 03/10] middle of wave 2 nothing working well but need to save --- lib/recipient.rb | 85 ++++++++++++++++++++++++++++++++++++++---- lib/slack.rb | 21 +++++++---- lib/workspace.rb | 28 +++++++++++++- test/workspace_test.rb | 4 +- 4 files changed, 122 insertions(+), 16 deletions(-) diff --git a/lib/recipient.rb b/lib/recipient.rb index fed2eb4e..204422a7 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,11 +1,82 @@ # module Slack -# class Recipient -# attr_reader -# def initialize - -# end + class Recipient + attr_accessor :user_name, :user_id, :channel_name, :channel_id + + def initialize(user_name = nil, user_id = nil, channel_name = nil, channel_id = nil ) + @user_name = user_name + @user_id = user_id + @channel_name = channel_name + @channel_id = channel_id + end + + def self.create_recipient_from_name(name,type) + recipient = Recipient.new + if type == "user" + recipient.user_name = name + elsif type == "channel" + recipient.channel_name = name + end + + return recipient + end - + def self.create_recipient_from_id(id,type) + recipient = Recipient.new + puts type + if type == "user" + recipient.user_id = id + elsif type == "channel" + recipient.channel_id = id + end + return recipient + end + + + def self.details(recipient) + + if recipient.user_name != nil + workspace = Workspace.new + users = workspace.users + users["members"].each do |member| + if member["name"] == recipient.user_name + puts member["name"] + puts member["real_name"] + puts member["id"] + end + end -# end + elsif @user_id != nil + workspace = Workspace.new + users = workspace.users + users["members"].each do |member| + if member["id"] == recipient.user_id + puts member["name"] + puts member["real_name"] + puts member["id"] + end + end + elsif @channel_name != nil + workspace = Workspace.new + channels = workspace.channels + channels["channels"].each do |channel| + if channel["name"] == recipient.channel_name + puts channel["topic"]["value"] + puts channel["num_members"] + puts channel["id"] + end + end + elsif @channel_id != nil + workspace = Workspace.new + channels = workspace.channels + puts "do you see me (self.details)?" + channels["channels"].each do |channel| + if channel["id"] == recipient.channel_id + puts channel["topic"]["value"] + puts channel["num_members"] + puts channel["id"] + end + end + end + end + end # end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 0bcb53d1..769f6da5 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -18,29 +18,36 @@ def main end def options - puts "What would you like to do? Please type one of the following:\n-1- list users\n-2- list channels\n-6- quit" + puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" user_input = gets.chomp.downcase - valid_inputs = ["list users", "list channels", "quit"] + valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] until valid_inputs.include?(user_input) - puts "Please type a valid response :\n- list users\n- list channels\n- quit" + puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" user_input = gets.chomp.downcase end case user_input - when "list users", 1 + when "list users" workspace = Workspace.new #how do i get my code so i dont need this? workspace.list_users(workspace) options - when "list channels", 2 + when "list channels" workspace = Workspace.new workspace.list_channels(workspace) options - - when "quit", 6 + when "select user" + user_info = Workspace.new.name_or_id("user") + when "select channel" + channel_info = Workspace.new.name_or_id("channel") + when "details" + when "quit" return end end + + + #end diff --git a/lib/workspace.rb b/lib/workspace.rb index 1cdd9257..bdf0a86f 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,3 +1,4 @@ +require_relative 'recipient' require 'table_print' require 'dotenv' require 'httparty' @@ -32,8 +33,10 @@ def list_users(workspace) users["members"].each do |member| puts "User number #{i}'s username is #{member["name"]}, their name is #{member["real_name"]}, and id is #{member["id"]}." + i += 1 end + #tp workspace.users, :name,:real_name, :slack_id
 end def list_channels(workspace) @@ -46,8 +49,31 @@ def list_channels(workspace) end end + def name_or_id(type) + puts "What information will you be providing? Please type 'name' or 'id'." + answer = gets.chomp.downcase + + while answer != "name" && answer != "id" + puts "Try again? Please type 'name' or 'id'." + answer = gets.chomp.downcase + end + + if answer == "name" + puts "Please provide the name:" + provided_name = gets.chomp + recipient = Recipient.create_recipient_from_name(provided_name,type) + Recipient.details(recipient) + + + elsif answer == "id" + puts "Please provide the id:" + provided_id = gets.chomp + recipient = Recipient.create_recipient_from_id(provided_id,type) + Recipient.details(recipient) + end + end - + end #end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index ffedbdeb..3891a419 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -35,7 +35,9 @@ VCR.use_cassette("users.list") do response = Workspace.new - expect(SWorkspace.new.list_users(response)).must_be_kind_of String + expect(Workspace.new.list_users(response)).must_be_kind_of String end end end + + From dafeea3bc1d626ea8b921aed3c3e62e58061ddee Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Thu, 12 Mar 2020 23:43:53 -0700 Subject: [PATCH 04/10] Wave 2 select user and channel done still need details. --- lib/recipient.rb | 97 +++++----- lib/slack.rb | 61 +++--- lib/workspace.rb | 50 +++-- test/cassettes/channels.yml | 37 ++-- test/cassettes/users.yml | 37 ++-- test/cassettes/users1.yml | 175 +++++++++++++++++ test/cassettes/users_list.yml | 345 ---------------------------------- test/recipient_test.rb | 71 ++++++- test/workspace_test.rb | 6 +- 9 files changed, 400 insertions(+), 479 deletions(-) create mode 100644 test/cassettes/users1.yml delete mode 100644 test/cassettes/users_list.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index 204422a7..3d00a706 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -2,6 +2,9 @@ class Recipient attr_accessor :user_name, :user_id, :channel_name, :channel_id + selected_recipient = "n/a" + + def initialize(user_name = nil, user_id = nil, channel_name = nil, channel_id = nil ) @user_name = user_name @user_id = user_id @@ -13,70 +16,72 @@ def self.create_recipient_from_name(name,type) recipient = Recipient.new if type == "user" recipient.user_name = name + selected_recipient = recipient elsif type == "channel" recipient.channel_name = name + selected_recipient = recipient end - return recipient end def self.create_recipient_from_id(id,type) recipient = Recipient.new - puts type if type == "user" recipient.user_id = id + selected_recipient = recipient elsif type == "channel" recipient.channel_id = id + selected_recipient = recipient end return recipient end - def self.details(recipient) + # def self.details(recipient) - if recipient.user_name != nil - workspace = Workspace.new - users = workspace.users - users["members"].each do |member| - if member["name"] == recipient.user_name - puts member["name"] - puts member["real_name"] - puts member["id"] - end - end + # if recipient.user_name != nil + # workspace = Workspace.new + # users = workspace.users + # users["members"].each do |member| + # if member["name"] == recipient.user_name + # puts member["name"] + # puts member["real_name"] + # puts member["id"] + # end + # end - elsif @user_id != nil - workspace = Workspace.new - users = workspace.users - users["members"].each do |member| - if member["id"] == recipient.user_id - puts member["name"] - puts member["real_name"] - puts member["id"] - end - end - elsif @channel_name != nil - workspace = Workspace.new - channels = workspace.channels - channels["channels"].each do |channel| - if channel["name"] == recipient.channel_name - puts channel["topic"]["value"] - puts channel["num_members"] - puts channel["id"] - end - end - elsif @channel_id != nil - workspace = Workspace.new - channels = workspace.channels - puts "do you see me (self.details)?" - channels["channels"].each do |channel| - if channel["id"] == recipient.channel_id - puts channel["topic"]["value"] - puts channel["num_members"] - puts channel["id"] - end - end - end - end + # elsif @user_id != nil + # workspace = Workspace.new + # users = workspace.users + # users["members"].each do |member| + # if member["id"] == recipient.user_id + # puts member["name"] + # puts member["real_name"] + # puts member["id"] + # end + # end + # elsif @channel_name != nil + # workspace = Workspace.new + # channels = workspace.channels + # channels["channels"].each do |channel| + # if channel["name"] == recipient.channel_name + # puts channel["topic"]["value"] + # puts channel["num_members"] + # puts channel["id"] + # end + # end + # elsif @channel_id != nil + # workspace = Workspace.new + # channels = workspace.channels + # puts "do you see me (self.details)?" + # channels["channels"].each do |channel| + # if channel["id"] == recipient.channel_id + # puts channel["topic"]["value"] + # puts channel["num_members"] + # puts channel["id"] + # end + # end + # end + # end end # end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 769f6da5..fd9078ce 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -11,40 +11,43 @@ def main puts "Your workspace has #{workspace.num_of_users} users." - options + workspace.options puts "Thank you for using the Ada Slack CLI" end - def options - puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" - user_input = gets.chomp.downcase - valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] - - until valid_inputs.include?(user_input) - puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" - user_input = gets.chomp.downcase - end - - case user_input - when "list users" - workspace = Workspace.new #how do i get my code so i dont need this? - workspace.list_users(workspace) - options - when "list channels" - workspace = Workspace.new - workspace.list_channels(workspace) - options - when "select user" - user_info = Workspace.new.name_or_id("user") - when "select channel" - channel_info = Workspace.new.name_or_id("channel") - when "details" - when "quit" - return - end - end + # def options + # puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + # user_input = gets.chomp.downcase + # valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] + + # until valid_inputs.include?(user_input) + # puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + # user_input = gets.chomp.downcase + # end + + # case user_input + # when "list users" + # workspace = Workspace.new #how do i get my code so i dont need this? + # workspace.list_users + # options + # when "list channels" + # workspace = Workspace.new + # workspace.list_channels + # options + # when "select user" + # user_info = Workspace.new.name_or_id("user") + # options + # when "select channel" + # channel_info = Workspace.new.name_or_id("channel") + # options + # when "details" + + # when "quit" + # return + # end + # end diff --git a/lib/workspace.rb b/lib/workspace.rb index bdf0a86f..ac6e7c30 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -17,6 +17,39 @@ def initialize @users = HTTParty.get(users_url, query: {token: KEY}) end + def options + puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + user_input = gets.chomp.downcase + valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] + + until valid_inputs.include?(user_input) + puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + user_input = gets.chomp.downcase + end + + case user_input + when "list users" + workspace = Workspace.new #how do i get my code so i dont need this? + workspace.list_users + options + when "list channels" + workspace = Workspace.new + workspace.list_channels + options + when "select user" + user_info = Workspace.new.name_or_id("user") + options + when "select channel" + channel_info = Workspace.new.name_or_id("channel") + options + when "details" + + when "quit" + return + end + return + end + def num_of_channels number = @channels["channels"].count return number @@ -27,22 +60,17 @@ def num_of_users return number end - def list_users(workspace) - users = workspace.users + def list_users i = 1 - users["members"].each do |member| puts "User number #{i}'s username is #{member["name"]}, their name is #{member["real_name"]}, and id is #{member["id"]}." - i += 1 end #tp workspace.users, :name,:real_name, :slack_id
 end - def list_channels(workspace) - channels = workspace.channels + def list_channels i = 1 - channels["channels"].each do |channel| puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." i += 1 @@ -62,14 +90,14 @@ def name_or_id(type) puts "Please provide the name:" provided_name = gets.chomp recipient = Recipient.create_recipient_from_name(provided_name,type) - Recipient.details(recipient) - - + puts "Thank you, I have noted your selection" + options elsif answer == "id" puts "Please provide the id:" provided_id = gets.chomp recipient = Recipient.create_recipient_from_id(provided_id,type) - Recipient.details(recipient) + puts "Thank you, I have noted your selection" + options end end diff --git a/test/cassettes/channels.yml b/test/cassettes/channels.yml index d9ca240a..29e9879b 100644 --- a/test/cassettes/channels.yml +++ b/test/cassettes/channels.yml @@ -21,15 +21,15 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '757' + - '803' Connection: - keep-alive Date: - - Thu, 12 Mar 2020 02:56:54 GMT + - Fri, 13 Mar 2020 05:34:11 GMT Server: - Apache X-Slack-Req-Id: - - 28d7aa2d674a3c824cab445256343083 + - e6884b8ae93f41ca77f8701417cbbd73 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write X-Accepted-Oauth-Scopes: @@ -60,18 +60,19 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-xy1y + - haproxy-www-4kab X-Cache: - Miss from cloudfront Via: - - 1.1 d0387b833e3ca8cb748a1296b4b4bf2b.cloudfront.net (CloudFront) + - 1.1 e8afb729a4bc6f5676d32307ea14bdae.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - HIO50-C1 X-Amz-Cf-Id: - - xtA05r6yeYVDGdULeE9BINMRR7u_TCfbMZ67xH47RJ1Ze09MUZCtig== + - QTHWKtE1Hljn5Pw-NjeihEVfttr6oX6SabyGStau7TJ3epFfAPaQfw== body: encoding: ASCII-8BIT - string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place to talk about ada homework","creator":"UUW7BN96D","last_set":1584056896},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide @@ -81,7 +82,7 @@ http_interactions: is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' http_version: null - recorded_at: Thu, 12 Mar 2020 02:56:54 GMT + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT - request: method: get uri: https://slack.com/api/users.list?token=SLACK_TOKEN @@ -103,15 +104,15 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1689' + - '1690' Connection: - keep-alive Date: - - Thu, 12 Mar 2020 02:56:55 GMT + - Fri, 13 Mar 2020 05:34:11 GMT Server: - Apache X-Slack-Req-Id: - - 55c7886dd1b07c09d95a3cfe7df3102d + - a07876007048ad4be31fa58108309620 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write X-Accepted-Oauth-Scopes: @@ -142,15 +143,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-xwyh + - haproxy-www-4fol X-Cache: - Miss from cloudfront Via: - - 1.1 60b744e5b364d04abea9fa6686121242.cloudfront.net (CloudFront) + - 1.1 26ca01ec7377e425b59b6a08cb1ec343.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C1 + - HIO50-C1 X-Amz-Cf-Id: - - tBIQY1OHPn6dpzGNo-Yn2lTsBNBRx2T8tj8p112vYR0BpOm1CSqq_g== + - 3MSqf5vG_K81Z9TYfZXl_36i3w-iYz6DmjkW4-LbFniWZ5fhO6lQqQ== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -168,7 +169,7 @@ http_interactions: Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea - Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1583981815,"response_metadata":{"next_cursor":""}}' + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1584077651,"response_metadata":{"next_cursor":""}}' http_version: null - recorded_at: Thu, 12 Mar 2020 02:56:55 GMT + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT recorded_with: VCR 5.1.0 diff --git a/test/cassettes/users.yml b/test/cassettes/users.yml index 92874516..1cfd8e34 100644 --- a/test/cassettes/users.yml +++ b/test/cassettes/users.yml @@ -21,15 +21,15 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '757' + - '803' Connection: - keep-alive Date: - - Thu, 12 Mar 2020 00:21:52 GMT + - Fri, 13 Mar 2020 05:34:11 GMT Server: - Apache X-Slack-Req-Id: - - 1365e815b314b8c772d7b73802d3aac2 + - 35344daec45893937a33900e70273a94 X-Oauth-Scopes: - identify,channels:read,users:read,chat:write X-Accepted-Oauth-Scopes: @@ -60,18 +60,19 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-zgfx + - haproxy-www-zk2s X-Cache: - Miss from cloudfront Via: - - 1.1 556b99c6be8d7078b9f067347c62df6b.cloudfront.net (CloudFront) + - 1.1 e8afb729a4bc6f5676d32307ea14bdae.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - HIO50-C1 X-Amz-Cf-Id: - - z8IFHb8Q3Bss8FLCqlwKZjWa2oUuIOHNwe3pjqwZiUbbtE2z9r419A== + - EVTARcfzEKaOmbjYO-gb7PFeHTyEWYq_9kmG4f__CDLZDhX5rogu0g== body: encoding: ASCII-8BIT - string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place to talk about ada homework","creator":"UUW7BN96D","last_set":1584056896},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide @@ -81,7 +82,7 @@ http_interactions: is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' http_version: null - recorded_at: Thu, 12 Mar 2020 00:21:52 GMT + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT - request: method: get uri: https://slack.com/api/users.list?token=SLACK_TOKEN @@ -103,15 +104,15 @@ http_interactions: Content-Type: - application/json; charset=utf-8 Content-Length: - - '1689' + - '1690' Connection: - keep-alive Date: - - Thu, 12 Mar 2020 00:21:52 GMT + - Fri, 13 Mar 2020 05:34:11 GMT Server: - Apache X-Slack-Req-Id: - - '09eece0cfeb0020813897f2a5edd6df1' + - f9eeb67e64aa600603bdf5b643b0198e X-Oauth-Scopes: - identify,channels:read,users:read,chat:write X-Accepted-Oauth-Scopes: @@ -142,15 +143,15 @@ http_interactions: Access-Control-Allow-Origin: - "*" X-Via: - - haproxy-www-qgdw + - haproxy-www-a0o8 X-Cache: - Miss from cloudfront Via: - - 1.1 3cd7af07832481c336aa1c93c9b4a6fe.cloudfront.net (CloudFront) + - 1.1 c34da255183aa208dd1c722ff211f9b2.cloudfront.net (CloudFront) X-Amz-Cf-Pop: - - SEA19-C2 + - HIO50-C1 X-Amz-Cf-Id: - - dCFIf6USCqmIf5UwfLJze6_r8i4vMaFzjFnhd4yprJXhtcNbyBW6aQ== + - al1MichJMOoBLmcf0nlbrj61dAnR5p-d0XX3SuHVs5DSid9wHm8nPQ== body: encoding: ASCII-8BIT string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific @@ -168,7 +169,7 @@ http_interactions: Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea - Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1583972512,"response_metadata":{"next_cursor":""}}' + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1584077651,"response_metadata":{"next_cursor":""}}' http_version: null - recorded_at: Thu, 12 Mar 2020 00:21:52 GMT + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT recorded_with: VCR 5.1.0 diff --git a/test/cassettes/users1.yml b/test/cassettes/users1.yml new file mode 100644 index 00000000..33b0bbc1 --- /dev/null +++ b/test/cassettes/users1.yml @@ -0,0 +1,175 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '803' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 05:34:10 GMT + Server: + - Apache + X-Slack-Req-Id: + - e76eac35b5ce03c54bf29d61682af74b + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - channels:read,groups:read,mpim:read,im:read,read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-qsab + X-Cache: + - Miss from cloudfront + Via: + - 1.1 84d78693f5031616e2902bea6b3ea970.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO50-C1 + X-Amz-Cf-Id: + - PFwctIWyS891wVPEte3sBD3Mn9T24a9R4FCqseZF8oeJDSAs0HCAGw== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A + place to talk about ada homework","creator":"UUW7BN96D","last_set":1584056896},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work + banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A + place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber + you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide + announcements and work-based matters","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This + channel is for workspace-wide communication and announcements. All members + are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica + is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I + am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 05:34:10 GMT +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1690' + Connection: + - keep-alive + Date: + - Fri, 13 Mar 2020 05:34:11 GMT + Server: + - Apache + X-Slack-Req-Id: + - 54e1b7c73cd656cef7482bfe4415b2e7 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-coly + X-Cache: + - Miss from cloudfront + Via: + - 1.1 cd48ffda04934d18865e47e99ea080bc.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - HIO50-C1 + X-Amz-Cf-Id: + - dPS8u6_m35owl9xQtJzHBGH5mkTY7YO6sJwlwiD5APg1XgeDua4q3A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1584077651,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Fri, 13 Mar 2020 05:34:11 GMT +recorded_with: VCR 5.1.0 diff --git a/test/cassettes/users_list.yml b/test/cassettes/users_list.yml deleted file mode 100644 index 50d6fa25..00000000 --- a/test/cassettes/users_list.yml +++ /dev/null @@ -1,345 +0,0 @@ ---- -http_interactions: -- request: - method: get - uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '757' - Connection: - - keep-alive - Date: - - Thu, 12 Mar 2020 04:47:55 GMT - Server: - - Apache - X-Slack-Req-Id: - - e2add19459e389f3ef2c9a74cd525235 - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write - X-Accepted-Oauth-Scopes: - - channels:read,groups:read,mpim:read,im:read,read - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Slack-Backend: - - h - X-Content-Type-Options: - - nosniff - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - X-Xss-Protection: - - '0' - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, - x-b3-sampled, x-b3-flags - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-qsab - X-Cache: - - Miss from cloudfront - Via: - - 1.1 b2f9564ebf9c745cc2ceae96d434977e.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19-C2 - X-Amz-Cf-Id: - - BU7XNcA_p53ChfIh8rdmyTQX7U4xGDHfKoM-nVhRamuWagFT6dbdug== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work - banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A - place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber - you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide - announcements and work-based matters","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This - channel is for workspace-wide communication and announcements. All members - are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica - is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I - am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' - http_version: null - recorded_at: Thu, 12 Mar 2020 04:47:55 GMT -- request: - method: get - uri: https://slack.com/api/users.list?token=SLACK_TOKEN - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '1689' - Connection: - - keep-alive - Date: - - Thu, 12 Mar 2020 04:47:55 GMT - Server: - - Apache - X-Slack-Req-Id: - - cd28d83cec18956be104d8038c1a087b - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write - X-Accepted-Oauth-Scopes: - - users:read - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Slack-Backend: - - h - X-Content-Type-Options: - - nosniff - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - X-Xss-Protection: - - '0' - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, - x-b3-sampled, x-b3-flags - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-kirk - X-Cache: - - Miss from cloudfront - Via: - - 1.1 be082a2326b7d49643607b097f1e7181.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19-C2 - X-Amz-Cf-Id: - - CR2noNCnpXJ7z57s_sVCcv-drdQmzghuyEmFo1plqyMbXJXK1Z7uCg== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna - Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna - Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna - Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara - Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara - Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara - Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica - Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica - Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica - Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea - Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea - Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1583988475,"response_metadata":{"next_cursor":""}}' - http_version: null - recorded_at: Thu, 12 Mar 2020 04:47:55 GMT -- request: - method: get - uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '757' - Connection: - - keep-alive - Date: - - Thu, 12 Mar 2020 05:04:50 GMT - Server: - - Apache - X-Slack-Req-Id: - - 05b6d8749fcfeb0adbcbd54ee4c79bf7 - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write - X-Accepted-Oauth-Scopes: - - channels:read,groups:read,mpim:read,im:read,read - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Slack-Backend: - - h - X-Content-Type-Options: - - nosniff - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - X-Xss-Protection: - - '0' - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, - x-b3-sampled, x-b3-flags - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-23wl - X-Cache: - - Miss from cloudfront - Via: - - 1.1 4d8620b80ebe37d366388e117039aa8e.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19-C1 - X-Amz-Cf-Id: - - ZkjCsMNKg5Z1xtDA8dPxicoF78ek8PV5ts4M9UQcrj90ChfaQ-lE4A== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work - banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A - place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber - you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide - announcements and work-based matters","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This - channel is for workspace-wide communication and announcements. All members - are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica - is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I - am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' - http_version: null - recorded_at: Thu, 12 Mar 2020 05:04:50 GMT -- request: - method: get - uri: https://slack.com/api/users.list?token=SLACK_TOKEN - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '1689' - Connection: - - keep-alive - Date: - - Thu, 12 Mar 2020 05:04:50 GMT - Server: - - Apache - X-Slack-Req-Id: - - a30cc0a2f67132f14950dc98a572ce26 - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write - X-Accepted-Oauth-Scopes: - - users:read - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Slack-Backend: - - h - X-Content-Type-Options: - - nosniff - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - X-Xss-Protection: - - '0' - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, - x-b3-sampled, x-b3-flags - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-d2dx - X-Cache: - - Miss from cloudfront - Via: - - 1.1 4d8620b80ebe37d366388e117039aa8e.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - SEA19-C1 - X-Amz-Cf-Id: - - WVd3nGh9golMKKL7heIcQXUrOfsA888gmXRSxVV5m-QTUa0TYx0-cA== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna - Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna - Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna - Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara - Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara - Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara - Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica - Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica - Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica - Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea - Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea - Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1583989490,"response_metadata":{"next_cursor":""}}' - http_version: null - recorded_at: Thu, 12 Mar 2020 05:04:50 GMT -recorded_with: VCR 5.1.0 diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 9eaad2d3..1ca6a054 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -1,13 +1,66 @@ require_relative "test_helper" -xdescribe "" do - it "" do - - - end - - it "" do - +require 'httparty' + +describe "initialize" do + + it "initializes with no arguments" do + recipient = Recipient.new + + expect(recipient).must_be_instance_of Recipient + expect(recipient.user_name).must_equal nil + end + + it "initializes with some arguments" do + recipient = Recipient.new(user_name = "Ada", user_id = nil, channel_name = "Ada's Channel", channel_id = nil) + recipient2 = Recipient.new(user_name = nil, user_id = 100, channel_name = nil, channel_id = 200) + recipient3 = Recipient.new(user_name = nil, user_id = nil, channel_name = nil, channel_id = "test") + + expect(recipient).must_be_instance_of Recipient + expect(recipient.user_name).must_equal "Ada" + expect(recipient.channel_name).must_equal "Ada's Channel" + + expect(recipient2).must_be_instance_of Recipient + expect(recipient2.user_id).must_equal 100 + expect(recipient2.channel_id).must_equal 200 + + expect(recipient3).must_be_instance_of Recipient + expect(recipient3.user_id).must_equal nil + expect(recipient3.user_name).must_equal nil + expect(recipient3.channel_id).must_equal "test" + end +end + +describe "recipient factories" do + + it "self.create_recipient_from_name creates recipient with USER name" do + recipient = Recipient.create_recipient_from_name("Ada", "user") + + expect(recipient).must_be_instance_of Recipient + expect(recipient.user_name).must_equal "Ada" + end + + it "self.create_recipient_from_name creates recipient with CHANNEL name" do + recipient = Recipient.create_recipient_from_name("general", "channel") + + expect(recipient).must_be_instance_of Recipient + expect(recipient.channel_name).must_equal "general" + + end + + it "create_recipient_from_ID creates recipient with USER id" do + recipient = Recipient.create_recipient_from_id("A100", "user") + + expect(recipient).must_be_instance_of Recipient + expect(recipient.user_id).must_equal "A100" + end + + it "create_recipient_from_name creates recipient with CHANNEL ID" do + recipient = Recipient.create_recipient_from_id("A100", "channel") + + expect(recipient).must_be_instance_of Recipient + expect(recipient.channel_id).must_equal "A100" + + end - end end diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 3891a419..79e8ea79 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -29,13 +29,13 @@ end end -xdescribe "listing users" do +xdescribe "listing users" do # look in to test the 2 listing functions do i need to break the functin apart? it "outputs list of users" do - VCR.use_cassette("users.list") do + VCR.use_cassette("users1") do response = Workspace.new - expect(Workspace.new.list_users(response)).must_be_kind_of String + expect(response.list_users).must_equal end end end From ce9da4a53ffdaeaf35b846d08c039079d96773d9 Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Fri, 13 Mar 2020 17:01:07 -0700 Subject: [PATCH 05/10] cleaned up some items and fixed lots of things which I dont know what happened to. Still in the same spot as last commit with no new test but cleaner. --- .gitignore | 1 + lib/channel.rb | 40 ++++++++++-- lib/recipient.rb | 27 +++++--- lib/slack.rb | 62 +++++++++--------- lib/user.rb | 21 ++++-- lib/workspace.rb | 145 +++++++++++++++++------------------------ test/test_helper.rb | 8 +-- test/user_test.rb | 37 +++++++---- test/workspace_test.rb | 2 +- 9 files changed, 186 insertions(+), 157 deletions(-) diff --git a/.gitignore b/.gitignore index 3ff4fada..d75d727d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ # Ignore environemnt variables .env +coverage diff --git a/lib/channel.rb b/lib/channel.rb index 668334cf..e89e4bdc 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,10 +1,38 @@ -module Slack - class Channel - attr_reader - def initialize - +require_relative "recipient" + +#module Slack + + class Channel < Recipient + + attr_reader :topic, :member_count + + def initialize( topic:, member_count:, name:, slack_id:) + super(slack_id: slack_id, name: name) + @topic = topic + @member_count = member_count + end + + # def num_of_channels + # number = @channels["channels"].count + # return number + # end + + # def list_channels + # i = 1 + # channels["channels"].each do |channel| + # puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." + # i += 1 + # end + # end + + def details end + #------ Class Methods ------ + + #api endpoint https://api.slack.com/methods/conversations.list + def self.list_all + end end -end \ No newline at end of file +#end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index 3d00a706..a7f10028 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,10 +1,8 @@ -# module Slack +#module Slack class Recipient attr_accessor :user_name, :user_id, :channel_name, :channel_id - selected_recipient = "n/a" - - + def initialize(user_name = nil, user_id = nil, channel_name = nil, channel_id = nil ) @user_name = user_name @user_id = user_id @@ -16,10 +14,8 @@ def self.create_recipient_from_name(name,type) recipient = Recipient.new if type == "user" recipient.user_name = name - selected_recipient = recipient elsif type == "channel" recipient.channel_name = name - selected_recipient = recipient end return recipient end @@ -28,14 +24,24 @@ def self.create_recipient_from_id(id,type) recipient = Recipient.new if type == "user" recipient.user_id = id - selected_recipient = recipient elsif type == "channel" recipient.channel_id = id - selected_recipient = recipient end return recipient end + + + # def self.get(url) #From Devins live code + # data = HTTParty.get(url,query{tokem: EVN['SLACK_TOKEN']}) + # if data.code != 200 ||data["ok"] == false + # raise SlackAPIError, "We encountered a problem #{data["error"]}" + # end + # return data + # end + + # class SlackAPIError < Exception #from Devins live sode + # end # def self.details(recipient) @@ -83,5 +89,8 @@ def self.create_recipient_from_id(id,type) # end # end # end + + class SlackAPIError < Exception + end end -# end \ No newline at end of file +#end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index fd9078ce..ccd82569 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -11,43 +11,41 @@ def main puts "Your workspace has #{workspace.num_of_users} users." - workspace.options + options(workspace) puts "Thank you for using the Ada Slack CLI" end - # def options - # puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" - # user_input = gets.chomp.downcase - # valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] - - # until valid_inputs.include?(user_input) - # puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" - # user_input = gets.chomp.downcase - # end - - # case user_input - # when "list users" - # workspace = Workspace.new #how do i get my code so i dont need this? - # workspace.list_users - # options - # when "list channels" - # workspace = Workspace.new - # workspace.list_channels - # options - # when "select user" - # user_info = Workspace.new.name_or_id("user") - # options - # when "select channel" - # channel_info = Workspace.new.name_or_id("channel") - # options - # when "details" - - # when "quit" - # return - # end - # end + def options(workspace) + puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + user_input = gets.chomp.downcase + valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] + + until valid_inputs.include?(user_input) + puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + user_input = gets.chomp.downcase + end + + case user_input + when "list users" + workspace.list_users #why wont this work? tp workspace.users, "slack_id", "name", "real_name" + options(workspace) + when "list channels" + workspace.list_channels + options(workspace) + when "select user" + user_info = workspace.name_or_id("user") + options(workspace) + when "select channel" + channel_info = workspace.name_or_id("channel") + options(workspace) + when "details" + + when "quit" + return + end + end diff --git a/lib/user.rb b/lib/user.rb index daa43e15..6056564c 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,12 +1,19 @@ require 'table_print' -module Slack - class User - attr_reader - def initialize - +#module Slack + class User < Recipient + attr_reader :real_name, :status_text, :status_emoji + + def initialize( real_name:, status_text:, status_emoji:, name:, slack_id:) + super(user_id: user_id, user_name: user_name) + + @real_name = real_name + @status_text = status_text + @status_emoji = status_emoji end - + + #tp workspace.users, :name,:real_name, :slack_id
 + end -end +#end diff --git a/lib/workspace.rb b/lib/workspace.rb index ac6e7c30..ea08757f 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -2,106 +2,77 @@ require 'table_print' require 'dotenv' require 'httparty' + + Dotenv.load KEY = ENV["SLACK_TOKEN"] -#module Slack - class Workspace - attr_reader :channels, :users - def initialize - channels_url = "https://slack.com/api/conversations.list" - @channels = HTTParty.get(channels_url, query: {token: KEY}) + class Workspace - users_url = "https://slack.com/api/users.list" - @users = HTTParty.get(users_url, query: {token: KEY}) - end + attr_accessor :channels, :users, :selected_recipient - def options - puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" - user_input = gets.chomp.downcase - valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] - - until valid_inputs.include?(user_input) - puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" - user_input = gets.chomp.downcase - end - - case user_input - when "list users" - workspace = Workspace.new #how do i get my code so i dont need this? - workspace.list_users - options - when "list channels" - workspace = Workspace.new - workspace.list_channels - options - when "select user" - user_info = Workspace.new.name_or_id("user") - options - when "select channel" - channel_info = Workspace.new.name_or_id("channel") - options - when "details" - - when "quit" - return - end - return - end + def initialize + channels_url = "https://slack.com/api/conversations.list" + @channels = HTTParty.get(channels_url, query: {token: KEY}) - def num_of_channels - number = @channels["channels"].count - return number - end - - def num_of_users - number = users["members"].count - return number - end + users_url = "https://slack.com/api/users.list" + @users = HTTParty.get(users_url, query: {token: KEY}) + @selected_recipient = nil + end - def list_users - i = 1 - users["members"].each do |member| - puts "User number #{i}'s username is #{member["name"]}, their name is #{member["real_name"]}, and id is #{member["id"]}." - i += 1 - end - #tp workspace.users, :name,:real_name, :slack_id
 + def num_of_channels + number = @channels["channels"].count + return number + end + + def list_channels + i = 1 + channels["channels"].each do |channel| + puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." + i += 1 end + end + + def num_of_users + number = users["members"].count + return number + end - def list_channels - i = 1 - channels["channels"].each do |channel| - puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." - i += 1 - end + def list_users + i = 1 + users["members"].each do |member| + puts "User number #{i}'s username is #{member["name"]}, their name is #{member["real_name"]}, and id is #{member["id"]}." + i += 1 end + end - def name_or_id(type) - puts "What information will you be providing? Please type 'name' or 'id'." + def name_or_id(type) + puts "What information will you be providing? Please type 'name' or 'id'." + answer = gets.chomp.downcase + + while answer != "name" && answer != "id" + puts "Try again? Please type 'name' or 'id'." answer = gets.chomp.downcase - - while answer != "name" && answer != "id" - puts "Try again? Please type 'name' or 'id'." - answer = gets.chomp.downcase - end - - if answer == "name" - puts "Please provide the name:" - provided_name = gets.chomp - recipient = Recipient.create_recipient_from_name(provided_name,type) - puts "Thank you, I have noted your selection" - options - elsif answer == "id" - puts "Please provide the id:" - provided_id = gets.chomp - recipient = Recipient.create_recipient_from_id(provided_id,type) - puts "Thank you, I have noted your selection" - options - end - end + end + + if answer == "name" + puts "Please provide the name:" + provided_name = gets.chomp + recipient = Recipient.create_recipient_from_name(provided_name, type) + @selected_recipient = recipient + puts "Thank you, I have noted your selection" + return - + elsif answer == "id" + puts "Please provide the id:" + provided_id = gets.chomp + recipient = Recipient.create_recipient_from_id(provided_id,type) + puts "Thank you, I have noted your selection" + @selected_recipient = recipient + return + end end -#end \ No newline at end of file + +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index b93121a9..a87f0707 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -15,10 +15,10 @@ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new require_relative "../lib/workspace.rb" -require_relative "../lib/slack.rb" -require_relative "../lib/user.rb" -require_relative "../lib/channel.rb" -require_relative "../lib/recipient.rb" +# require_relative "../lib/slack.rb" +# require_relative "../lib/user.rb" +# require_relative "../lib/channel.rb" +# require_relative "../lib/recipient.rb" VCR.configure do |config| config.cassette_library_dir = "test/cassettes" diff --git a/test/user_test.rb b/test/user_test.rb index c70c1676..a0f8ecda 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,13 +1,28 @@ require_relative "test_helper" -xdescribe "" do - it "" do - - - end - - it "" do - - - end -end + +# xdescribe "user" +# xdescribe "self.get" do +# it "get s a list of users " do +# result = {} +# VCR.use_cassette ("user-list-endpoint") do +# result = User.get("https://slack.com/api/users.list") +# end + +# expect(results).must_be_kind_of HTTParty::Response +# expect(result.("ok")).must_equal true +# end + +# it "raises an error when a call fails" do +# VCR.use_cassette ("user-list-endpoint") do + +# expect{User.get(https://slack.com/api/bogus.endpoint)}.must_raise SlackAPIError +# end +# end +# end + +# xderscribe "self.list" do +# it "return a valid list of the users" + + +# end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 79e8ea79..ad052375 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,7 +1,7 @@ require_relative "test_helper" - require 'httparty' +selected_recipient = nil describe "getting number of channels" do From 45b7c2a4f4901a15ddc1ac967c792c8557e14223 Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Fri, 13 Mar 2020 23:06:40 -0700 Subject: [PATCH 06/10] worked with husband to clean up code and move items in users and channels. need to work on tests. --- lib/channel.rb | 51 +++++------ lib/recipient.rb | 150 ++++++++++++-------------------- lib/slack.rb | 55 ++++++------ lib/user.rb | 18 ++-- lib/workspace.rb | 89 ++++++++++++------- test/cassettes/users1.yml | 175 -------------------------------------- test/user_test.rb | 6 +- test/workspace_test.rb | 46 ++++++++-- 8 files changed, 216 insertions(+), 374 deletions(-) delete mode 100644 test/cassettes/users1.yml diff --git a/lib/channel.rb b/lib/channel.rb index e89e4bdc..157e846e 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,38 +1,31 @@ require_relative "recipient" -#module Slack +class Channel < Recipient + attr_reader :topic, :member_count - class Channel < Recipient - - attr_reader :topic, :member_count - - def initialize( topic:, member_count:, name:, slack_id:) - super(slack_id: slack_id, name: name) - @topic = topic - @member_count = member_count - end - - # def num_of_channels - # number = @channels["channels"].count - # return number - # end - - # def list_channels - # i = 1 - # channels["channels"].each do |channel| - # puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." - # i += 1 - # end - # end + def initialize#(topic:, member_count:, name:, slack_id:) + super(name: name, id: id) + @topic = topic + @member_count = member_count + end - def details + def self.create(identifier, identifier_type) + recipient = Channel.new + if identifier_type == "channel_name" + recipient.name = identifier + elsif identifier_type == "channel_id" + recipient.id = identifier end + return recipient + end - #------ Class Methods ------ + def details + end - #api endpoint https://api.slack.com/methods/conversations.list - def self.list_all - end + #------ Class Methods ------ + #api endpoint https://api.slack.com/methods/conversations.list + def self.list_all end -#end \ No newline at end of file + +end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index a7f10028..cac7fb25 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,96 +1,58 @@ -#module Slack - class Recipient - attr_accessor :user_name, :user_id, :channel_name, :channel_id - - - def initialize(user_name = nil, user_id = nil, channel_name = nil, channel_id = nil ) - @user_name = user_name - @user_id = user_id - @channel_name = channel_name - @channel_id = channel_id - end - - def self.create_recipient_from_name(name,type) - recipient = Recipient.new - if type == "user" - recipient.user_name = name - elsif type == "channel" - recipient.channel_name = name - end - return recipient - end - - def self.create_recipient_from_id(id,type) - recipient = Recipient.new - if type == "user" - recipient.user_id = id - elsif type == "channel" - recipient.channel_id = id - end - return recipient - end - - - - # def self.get(url) #From Devins live code - # data = HTTParty.get(url,query{tokem: EVN['SLACK_TOKEN']}) - # if data.code != 200 ||data["ok"] == false - # raise SlackAPIError, "We encountered a problem #{data["error"]}" - # end - # return data - # end - - # class SlackAPIError < Exception #from Devins live sode - # end - - # def self.details(recipient) - - # if recipient.user_name != nil - # workspace = Workspace.new - # users = workspace.users - # users["members"].each do |member| - # if member["name"] == recipient.user_name - # puts member["name"] - # puts member["real_name"] - # puts member["id"] - # end - # end - - # elsif @user_id != nil - # workspace = Workspace.new - # users = workspace.users - # users["members"].each do |member| - # if member["id"] == recipient.user_id - # puts member["name"] - # puts member["real_name"] - # puts member["id"] - # end - # end - # elsif @channel_name != nil - # workspace = Workspace.new - # channels = workspace.channels - # channels["channels"].each do |channel| - # if channel["name"] == recipient.channel_name - # puts channel["topic"]["value"] - # puts channel["num_members"] - # puts channel["id"] - # end - # end - # elsif @channel_id != nil - # workspace = Workspace.new - # channels = workspace.channels - # puts "do you see me (self.details)?" - # channels["channels"].each do |channel| - # if channel["id"] == recipient.channel_id - # puts channel["topic"]["value"] - # puts channel["num_members"] - # puts channel["id"] - # end - # end - # end - # end +class Recipient + #attr_accessor :user_name, :user_id, :channel_name, :channel_id + attr_accessor :name, :id + def initialize(name = nil, id = nil) + @name = name + @id = id + end - class SlackAPIError < Exception - end + def self.create + raise NotImplementedError end -#end \ No newline at end of file + + # def self.details(recipient) + # if recipient.user_name != nil + # workspace = Workspace.new + # users = workspace.users + # users["members"].each do |member| + # if member["name"] == recipient.user_name + # puts member["name"] + # puts member["real_name"] + # puts member["id"] + # end + # end + + # elsif @user_id != nil + # workspace = Workspace.new + # users = workspace.users + # users["members"].each do |member| + # if member["id"] == recipient.user_id + # puts member["name"] + # puts member["real_name"] + # puts member["id"] + # end + # end + # elsif @channel_name != nil + # workspace = Workspace.new + # channels = workspace.channels + # channels["channels"].each do |channel| + # if channel["name"] == recipient.channel_name + # puts channel["topic"]["value"] + # puts channel["num_members"] + # puts channel["id"] + # end + # end + # elsif @channel_id != nil + # workspace = Workspace.new + # channels = workspace.channels + # puts "do you see me (self.details)?" + # channels["channels"].each do |channel| + # if channel["id"] == recipient.channel_id + # puts channel["topic"]["value"] + # puts channel["num_members"] + # puts channel["id"] + # end + # end + # end + # end +end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index ccd82569..be5d05e9 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,35 +1,37 @@ #!/usr/bin/env ruby require 'httparty' + require_relative 'workspace' -#module Slack - def main - puts "Welcome to the Ada Slack CLI!" - workspace = Workspace.new - # TODO project - puts "Your workspace has #{workspace.num_of_channels} channels." - - puts "Your workspace has #{workspace.num_of_users} users." - - options(workspace) +def main + puts "Welcome to the Ada Slack CLI!" + workspace = Workspace.new - puts "Thank you for using the Ada Slack CLI" + puts "Your workspace has #{workspace.num_of_channels} channels." + puts "Your workspace has #{workspace.num_of_users} users." + + options(workspace) - end + puts "Thank you for using the Ada Slack CLI" +end - def options(workspace) - puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" - user_input = gets.chomp.downcase - valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] +# @TODO: Refactor to make this not recursive. Nice to have, +# but not required. +def options(workspace) + puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + user_input = gets.chomp.downcase + valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] - until valid_inputs.include?(user_input) - puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" - user_input = gets.chomp.downcase - end + until valid_inputs.include?(user_input) + puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + user_input = gets.chomp.downcase + end - case user_input + case user_input when "list users" - workspace.list_users #why wont this work? tp workspace.users, "slack_id", "name", "real_name" + # @TODO: why wont this work? tp workspace.users, + # "slack_id", "name", "real_name" + workspace.list_users options(workspace) when "list channels" workspace.list_channels @@ -41,15 +43,10 @@ def options(workspace) channel_info = workspace.name_or_id("channel") options(workspace) when "details" - + puts "TO BE IMPLEMENTED" when "quit" return - end end - - - -#end - +end main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/user.rb b/lib/user.rb index 6056564c..4ddb09f1 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -1,19 +1,27 @@ require 'table_print' +require_relative 'recipient' + #module Slack class User < Recipient attr_reader :real_name, :status_text, :status_emoji - def initialize( real_name:, status_text:, status_emoji:, name:, slack_id:) - super(user_id: user_id, user_name: user_name) + def initialize #(real_name:, status_text:, status_emoji:, name:, slack_id:) + super(id: id, name: name) @real_name = real_name @status_text = status_text @status_emoji = status_emoji end - - #tp workspace.users, :name,:real_name, :slack_id
 - + def self.create(identifier, identifier_type) + recipient = User.new + if identifier_type == "user_name" + recipient.name = identifier + elsif identifier_type == "user_id" + recipient.id = identifier + end + return recipient + end end #end diff --git a/lib/workspace.rb b/lib/workspace.rb index ea08757f..62cf0a7e 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,46 +1,57 @@ -require_relative 'recipient' require 'table_print' require 'dotenv' require 'httparty' +require_relative 'recipient' +require_relative 'user' +require_relative 'channel' +# @TODO: Load environment objects and key in an actual method Dotenv.load KEY = ENV["SLACK_TOKEN"] - class Workspace +class Workspace + attr_accessor :channels, :users, :selected_recipient + + def initialize + @users = get("https://slack.com/api/users.list") + @channels = get("https://slack.com/api/conversations.list") + @selected_recipient = nil + end - attr_accessor :channels, :users, :selected_recipient + def get(url) + response = HTTParty.get(url, query: {token: ENV['SLACK_TOKEN']}) - def initialize - channels_url = "https://slack.com/api/conversations.list" - @channels = HTTParty.get(channels_url, query: {token: KEY}) + if response.code != 200 || response["ok"] == false + raise SlackAPIError, "We encountered a problem: #{response["error"]}" + end - users_url = "https://slack.com/api/users.list" - @users = HTTParty.get(users_url, query: {token: KEY}) - @selected_recipient = nil + return response end - def num_of_channels + def num_of_channels number = @channels["channels"].count return number end - def list_channels + def list_channels i = 1 + channels["channels"].each do |channel| - puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." - i += 1 + puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." + i += 1 end end - def num_of_users + def num_of_users number = users["members"].count return number end def list_users i = 1 + users["members"].each do |member| puts "User number #{i}'s username is #{member["name"]}, their name is #{member["real_name"]}, and id is #{member["id"]}." i += 1 @@ -56,23 +67,37 @@ def name_or_id(type) answer = gets.chomp.downcase end - if answer == "name" - puts "Please provide the name:" - provided_name = gets.chomp - recipient = Recipient.create_recipient_from_name(provided_name, type) - @selected_recipient = recipient - puts "Thank you, I have noted your selection" - return - - elsif answer == "id" - puts "Please provide the id:" - provided_id = gets.chomp - recipient = Recipient.create_recipient_from_id(provided_id,type) - puts "Thank you, I have noted your selection" - @selected_recipient = recipient - return - end - end + # @TODO: Refactor this. Stop using parameters as variable names, lots of other duplication. Jesus this is bad. + if type == "user" + if answer == "name" + puts "Please provide the name:" + provided_name = gets.chomp + recipient = User.create(provided_name, "user_#{answer}") + @selected_recipient = recipient + puts "Thank you, I have noted your selection" + elsif answer == "id" + puts "Please provide the id:" + provided_id = gets.chomp + recipient = User.create(provided_id, "user_#{answer}") + @selected_recipient = recipient + puts "Thank you, I have noted your selection" + end + end - + if type == "channel" + if answer == "name" + puts "Please provide the name:" + provided_name = gets.chomp + recipient = Channel.create(provided_name, "channel_#{answer}") + @selected_recipient = recipient + puts "Thank you, I have noted your selection" + elsif answer == "id" + puts "Please provide the id:" + provided_id = gets.chomp + recipient = Channel.create(provided_id, "channel_#{answer}") + @selected_recipient = recipient + puts "Thank you, I have noted your selection" + end + end + end end \ No newline at end of file diff --git a/test/cassettes/users1.yml b/test/cassettes/users1.yml deleted file mode 100644 index 33b0bbc1..00000000 --- a/test/cassettes/users1.yml +++ /dev/null @@ -1,175 +0,0 @@ ---- -http_interactions: -- request: - method: get - uri: https://slack.com/api/conversations.list?token=SLACK_TOKEN - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '803' - Connection: - - keep-alive - Date: - - Fri, 13 Mar 2020 05:34:10 GMT - Server: - - Apache - X-Slack-Req-Id: - - e76eac35b5ce03c54bf29d61682af74b - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write - X-Accepted-Oauth-Scopes: - - channels:read,groups:read,mpim:read,im:read,read - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Slack-Backend: - - h - X-Content-Type-Options: - - nosniff - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - X-Xss-Protection: - - '0' - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, - x-b3-sampled, x-b3-flags - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-qsab - X-Cache: - - Miss from cloudfront - Via: - - 1.1 84d78693f5031616e2902bea6b3ea970.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - HIO50-C1 - X-Amz-Cf-Id: - - PFwctIWyS891wVPEte3sBD3Mn9T24a9R4FCqseZF8oeJDSAs0HCAGw== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"channels":[{"id":"CUURD2M5Z","name":"slackcli","is_channel":true,"is_group":false,"is_im":false,"created":1583874439,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"slackcli","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"A - place to talk about ada homework","creator":"UUW7BN96D","last_set":1584056896},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[],"num_members":4},{"id":"CV85Q6S0P","name":"random","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"random","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Non-work - banter and water cooler conversation","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"A - place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber - you''d prefer to keep out of more focused work-related channels.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":4},{"id":"CV8FWUH8W","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1583874438,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"UV85Q5X6K","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":true,"is_private":false,"is_mpim":false,"topic":{"value":"Company-wide - announcements and work-based matters","creator":"UV85Q5X6K","last_set":1583874438},"purpose":{"value":"This - channel is for workspace-wide communication and announcements. All members - are in this channel.","creator":"UV85Q5X6K","last_set":1583874438},"previous_names":[],"num_members":5},{"id":"CV8S3C59T","name":"butthead","is_channel":true,"is_group":false,"is_im":false,"created":1583966699,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"butthead","is_shared":false,"parent_conversation":null,"creator":"UV6A4F83S","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"jessica - is sending messages here !","creator":"UV6A4F83S","last_set":1583966700},"previous_names":[],"num_members":1},{"id":"CVAEAU1LN","name":"honeybucket","is_channel":true,"is_group":false,"is_im":false,"created":1583949693,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"honeybucket","is_shared":false,"parent_conversation":null,"creator":"UUUSFT2AX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["TV85Q5X0X"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"I - am a honeybucket.","creator":"UUUSFT2AX","last_set":1583959733},"previous_names":[],"num_members":2}],"response_metadata":{"next_cursor":""}}' - http_version: null - recorded_at: Fri, 13 Mar 2020 05:34:10 GMT -- request: - method: get - uri: https://slack.com/api/users.list?token=SLACK_TOKEN - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/json; charset=utf-8 - Content-Length: - - '1690' - Connection: - - keep-alive - Date: - - Fri, 13 Mar 2020 05:34:11 GMT - Server: - - Apache - X-Slack-Req-Id: - - 54e1b7c73cd656cef7482bfe4415b2e7 - X-Oauth-Scopes: - - identify,channels:read,users:read,chat:write - X-Accepted-Oauth-Scopes: - - users:read - Access-Control-Expose-Headers: - - x-slack-req-id, retry-after - X-Slack-Backend: - - h - X-Content-Type-Options: - - nosniff - Expires: - - Mon, 26 Jul 1997 05:00:00 GMT - Cache-Control: - - private, no-cache, no-store, must-revalidate - X-Xss-Protection: - - '0' - Vary: - - Accept-Encoding - Pragma: - - no-cache - Access-Control-Allow-Headers: - - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, - x-b3-sampled, x-b3-flags - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Referrer-Policy: - - no-referrer - Access-Control-Allow-Origin: - - "*" - X-Via: - - haproxy-www-coly - X-Cache: - - Miss from cloudfront - Via: - - 1.1 cd48ffda04934d18865e47e99ea080bc.cloudfront.net (CloudFront) - X-Amz-Cf-Pop: - - HIO50-C1 - X-Amz-Cf-Id: - - dPS8u6_m35owl9xQtJzHBGH5mkTY7YO6sJwlwiD5APg1XgeDua4q3A== - body: - encoding: ASCII-8BIT - string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna - Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna - Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna - Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara - Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara - Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara - Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica - Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica - Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica - Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific - Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea - Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea - Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false}],"cache_ts":1584077651,"response_metadata":{"next_cursor":""}}' - http_version: null - recorded_at: Fri, 13 Mar 2020 05:34:11 GMT -recorded_with: VCR 5.1.0 diff --git a/test/user_test.rb b/test/user_test.rb index a0f8ecda..211269cb 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -21,8 +21,8 @@ # end # end -# xderscribe "self.list" do -# it "return a valid list of the users" +# # xderscribe "self.list" do +# # it "return a valid list of the users" -# end \ No newline at end of file +# # end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index ad052375..3b35f833 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -1,8 +1,6 @@ require_relative "test_helper" require 'httparty' -selected_recipient = nil - describe "getting number of channels" do it "can get number of channels" do @@ -29,15 +27,49 @@ end end -xdescribe "listing users" do # look in to test the 2 listing functions do i need to break the functin apart? +xdescribe "list_users" do # look in to test the 2 listing functions do i need to break the functin apart? it "outputs list of users" do - VCR.use_cassette("users1") do - response = Workspace.new + result = {} + VCR.use_cassette("list_of_users") do + result = Workspace.get("https://slack.com/api/users.list") + end - expect(response.list_users).must_equal - end + expect(result).must_be_kind_of HTTParty::Response + expect(result["ok"]).must_equal true + end + + it "raises an error when a call fails" do + VCR.use_cassette("list_of_users") do + expect {User.get("https://slack.com/api/bogus.call")}.must_raise SlackAPIError #from Devins live code + end + end end +# xdescribe "list user" +# xdescribe "self.get" do +# xit "get s a list of users " do +# result = {} +# VCR.use_cassette ("user-list-endpoint") do +# result = User.get("https://slack.com/api/users.list") +# end + +# expect(results).must_be_kind_of HTTParty::Response +# expect(result.("ok")).must_equal true +# end + +# xit "raises an error when a call fails" do +# VCR.use_cassette ("user-list-endpoint") do + +# expect{User.get(https://slack.com/api/bogus.endpoint)}.must_raise SlackAPIError +# end +# end +# end + +# xderscribe "self.list" do +# it "return a valid list of the users" + + +# end From b31a629160b1c24d7e6c02a4388e906fb694aa11 Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Sat, 14 Mar 2020 16:31:59 -0700 Subject: [PATCH 07/10] got test working from last commit. Unfortunatly, I have been creating a new recipient when a user selects a recipient. This is not correct I need to be selcting/finding the user from the workspace. --- lib/recipient.rb | 88 ++++++++--------- lib/slack.rb | 20 +++- lib/workspace.rb | 16 +++- test/cassettes/list_of_users.yml | 159 +++++++++++++++++++++++++++++++ test/channel_test.rb | 25 +++-- test/recipient_test.rb | 55 +++-------- test/user_test.rb | 18 ++++ test/workspace_test.rb | 4 +- 8 files changed, 278 insertions(+), 107 deletions(-) create mode 100644 test/cassettes/list_of_users.yml diff --git a/lib/recipient.rb b/lib/recipient.rb index cac7fb25..7d118b43 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -10,49 +10,49 @@ def self.create raise NotImplementedError end - # def self.details(recipient) - # if recipient.user_name != nil - # workspace = Workspace.new - # users = workspace.users - # users["members"].each do |member| - # if member["name"] == recipient.user_name - # puts member["name"] - # puts member["real_name"] - # puts member["id"] - # end - # end + def self.details(recipient) + if recipient.user_name != nil + workspace = Workspace.new + users = workspace.users + users["members"].each do |member| + if member["name"] == recipient.user_name + puts member["name"] + puts member["real_name"] + puts member["id"] + end + end - # elsif @user_id != nil - # workspace = Workspace.new - # users = workspace.users - # users["members"].each do |member| - # if member["id"] == recipient.user_id - # puts member["name"] - # puts member["real_name"] - # puts member["id"] - # end - # end - # elsif @channel_name != nil - # workspace = Workspace.new - # channels = workspace.channels - # channels["channels"].each do |channel| - # if channel["name"] == recipient.channel_name - # puts channel["topic"]["value"] - # puts channel["num_members"] - # puts channel["id"] - # end - # end - # elsif @channel_id != nil - # workspace = Workspace.new - # channels = workspace.channels - # puts "do you see me (self.details)?" - # channels["channels"].each do |channel| - # if channel["id"] == recipient.channel_id - # puts channel["topic"]["value"] - # puts channel["num_members"] - # puts channel["id"] - # end - # end - # end - # end + elsif @user_id != nil + workspace = Workspace.new + users = workspace.users + users["members"].each do |member| + if member["id"] == recipient.user_id + puts member["name"] + puts member["real_name"] + puts member["id"] + end + end + elsif @channel_name != nil + workspace = Workspace.new + channels = workspace.channels + channels["channels"].each do |channel| + if channel["name"] == recipient.channel_name + puts channel["topic"]["value"] + puts channel["num_members"] + puts channel["id"] + end + end + elsif @channel_id != nil + workspace = Workspace.new + channels = workspace.channels + puts "do you see me (self.details)?" + channels["channels"].each do |channel| + if channel["id"] == recipient.channel_id + puts channel["topic"]["value"] + puts channel["num_members"] + puts channel["id"] + end + end + end + end end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index be5d05e9..ad25fe52 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -1,6 +1,6 @@ #!/usr/bin/env ruby require 'httparty' - +require 'table_print' require_relative 'workspace' def main @@ -29,8 +29,7 @@ def options(workspace) case user_input when "list users" - # @TODO: why wont this work? tp workspace.users, - # "slack_id", "name", "real_name" + # @TODO why does this not work tp workspace.users, "slack_id", "name", "real_name" workspace.list_users options(workspace) when "list channels" @@ -43,10 +42,23 @@ def options(workspace) channel_info = workspace.name_or_id("channel") options(workspace) when "details" - puts "TO BE IMPLEMENTED" + # if workspace.selected_recipient.class == User + # puts workspace.selected_recipient.name + # puts workspace.selected_recipient.real_name + # puts workspace.selected_recipient.id + # elsif workspace.selected_recipient.class == Channel + # puts selected_recipient.channel["topic"]["value"] + # puts selected_recipient.channel["num_members"] + # puts selected_recipient.channel["id"] + # end + when "quit" return end end + + + + main if __FILE__ == $PROGRAM_NAME \ No newline at end of file diff --git a/lib/workspace.rb b/lib/workspace.rb index 62cf0a7e..35356277 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -1,4 +1,4 @@ -require 'table_print' + require 'dotenv' require 'httparty' @@ -15,12 +15,12 @@ class Workspace attr_accessor :channels, :users, :selected_recipient def initialize - @users = get("https://slack.com/api/users.list") - @channels = get("https://slack.com/api/conversations.list") + @users = Workspace.get("https://slack.com/api/users.list") + @channels = Workspace.get("https://slack.com/api/conversations.list") @selected_recipient = nil end - def get(url) + def self.get(url) response = HTTParty.get(url, query: {token: ENV['SLACK_TOKEN']}) if response.code != 200 || response["ok"] == false @@ -42,6 +42,7 @@ def list_channels puts "Channel number #{i}'s name is #{channel["name"]}, their topic is '#{channel["topic"]["value"]}', it has #{channel["num_members"]} members and its id is #{channel["id"]}." i += 1 end + end def num_of_users @@ -58,6 +59,9 @@ def list_users end end + + + def name_or_id(type) puts "What information will you be providing? Please type 'name' or 'id'." answer = gets.chomp.downcase @@ -100,4 +104,6 @@ def name_or_id(type) end end end -end \ No newline at end of file +end + +class SlackAPIError < StandardError ; end \ No newline at end of file diff --git a/test/cassettes/list_of_users.yml b/test/cassettes/list_of_users.yml new file mode 100644 index 00000000..a27915a7 --- /dev/null +++ b/test/cassettes/list_of_users.yml @@ -0,0 +1,159 @@ +--- +http_interactions: +- request: + method: get + uri: https://slack.com/api/users.list?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1827' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 21:37:33 GMT + Server: + - Apache + X-Slack-Req-Id: + - 22b0b97cd74447aeca01d14cdc1752d0 + X-Oauth-Scopes: + - identify,channels:read,users:read,chat:write + X-Accepted-Oauth-Scopes: + - users:read + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + X-Slack-Backend: + - h + X-Content-Type-Options: + - nosniff + Expires: + - Mon, 26 Jul 1997 05:00:00 GMT + Cache-Control: + - private, no-cache, no-store, must-revalidate + X-Xss-Protection: + - '0' + Vary: + - Accept-Encoding + Pragma: + - no-cache + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Referrer-Policy: + - no-referrer + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-22gd + X-Cache: + - Miss from cloudfront + Via: + - 1.1 0d686860a571e09f23ba7586948f0629.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD52-C2 + X-Amz-Cf-Id: + - r9pLsI_m5bZ6SihiTAJMmvYecvdQU_1IDIHCmuBL9yBVYfpsz3Hm5A== + body: + encoding: ASCII-8BIT + string: '{"ok":true,"members":[{"id":"USLACKBOT","team_id":"TV85Q5X0X","name":"slackbot","deleted":false,"color":"757575","real_name":"Slackbot","tz":null,"tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Slackbot","real_name_normalized":"Slackbot","display_name":"Slackbot","display_name_normalized":"Slackbot","fields":null,"status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"sv41d8cd98f0","always_active":true,"first_name":"slackbot","last_name":"","image_24":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_24.png","image_32":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_32.png","image_48":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_48.png","image_72":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_72.png","image_192":"https:\/\/a.slack-edge.com\/80588\/marketing\/img\/avatars\/slackbot\/avatar-slackbot.png","image_512":"https:\/\/a.slack-edge.com\/80588\/img\/slackbot_512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":0},{"id":"UUTJF9Z7U","team_id":"TV85Q5X0X","name":"slack_cli","deleted":false,"color":"e0a729","real_name":"time_jessica_slack_cli","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_jessica_slack_cli","real_name_normalized":"time_jessica_slack_cli","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g23de1849e03","api_app_id":"AV6C0GX8Q","always_active":false,"bot_id":"BUUTVJCFM","first_name":"time_jessica_slack_cli","last_name":"","image_24":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/23de1849e03bc9f1403548e661e77519.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0011-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583878275},{"id":"UUUSFT2AX","team_id":"TV85Q5X0X","name":"corinna.fabre","deleted":false,"color":"3c989f","real_name":"Corinna + Fabre","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Corinna + Fabre","real_name_normalized":"Corinna Fabre","display_name":"Corinna Fabre","display_name_normalized":"Corinna + Fabre","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g08e2ebca3fe","image_24":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/08e2ebca3feb277ff6383d9681b48445.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0022-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583875633,"has_2fa":false},{"id":"UUW7BN96D","team_id":"TV85Q5X0X","name":"sarabrandaoalves","deleted":false,"color":"4bbe2e","real_name":"Sara + Brandao Nilsen","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Sara + Brandao Nilsen","real_name_normalized":"Sara Brandao Nilsen","display_name":"Sara + Brandao Nilsen","display_name_normalized":"Sara Brandao Nilsen","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"g751ce7dd23b","image_24":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/751ce7dd23b7cb6a3d79b89a2869846f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0002-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874562,"has_2fa":false},{"id":"UV5T8F3GC","team_id":"TV85Q5X0X","name":"time_corinna_api_proj","deleted":false,"color":"e96699","real_name":"time_corinna_api_proj","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"time_corinna_api_proj","real_name_normalized":"time_corinna_api_proj","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gd8d3b59977e","api_app_id":"AUTH853R8","always_active":false,"bot_id":"BUTHFRBNW","image_24":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/d8d3b59977e3eb11ee48b809109e2d3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0016-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583876096},{"id":"UV6A4F83S","team_id":"TV85Q5X0X","name":"jessicursliang","deleted":false,"color":"e7392d","real_name":"Jessica + Liang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Jessica + Liang","real_name_normalized":"Jessica Liang","display_name":"Jessica Liang","display_name_normalized":"Jessica + Liang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"ge8dc8115344","image_24":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/e8dc81153440fd089c8667328cc8c16f.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874886,"has_2fa":false},{"id":"UV6AWDGE4","team_id":"TV85Q5X0X","name":"space_chelsea_slack_c","deleted":false,"color":"674b1b","real_name":"space_chelsea_slack_c","tz":"America\/Los_Angeles","tz_label":"Pacific + Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"space_chelsea_slack_c","real_name_normalized":"space_chelsea_slack_c","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb9478f6ad6d","api_app_id":"AV5SE0C12","always_active":false,"bot_id":"BV6AWDEN4","image_24":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b9478f6ad6d05640a2b7597ab7f886dd.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0020-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"is_app_user":false,"updated":1583875744},{"id":"UV85Q5X6K","team_id":"TV85Q5X0X","name":"chelhelg","deleted":false,"color":"9f69e7","real_name":"Chelsea + Dallal","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Chelsea + Dallal","real_name_normalized":"Chelsea Dallal","display_name":"","display_name_normalized":"","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gf781ac2ef3e","first_name":"Chelsea","last_name":"Dallal","image_24":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/f781ac2ef3e2a4e250e491b1eb756fe1.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0019-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1583874540,"has_2fa":false},{"id":"UVCHSSS20","team_id":"TV85Q5X0X","name":"vwhwang38","deleted":false,"color":"684b6c","real_name":"Vicki + Hwang","tz":"America\/Los_Angeles","tz_label":"Pacific Daylight Time","tz_offset":-25200,"profile":{"title":"","phone":"","skype":"","real_name":"Vicki + Hwang","real_name_normalized":"Vicki Hwang","display_name":"Vicki Hwang","display_name_normalized":"Vicki + Hwang","status_text":"","status_emoji":"","status_expiration":0,"avatar_hash":"gb8a3420bda5","image_24":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/b8a3420bda53568a07a418680d57edde.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0006-512.png","status_text_canonical":"","team":"TV85Q5X0X"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"is_app_user":false,"updated":1584115945,"has_2fa":false}],"cache_ts":1584221853,"response_metadata":{"next_cursor":""}}' + http_version: null + recorded_at: Sat, 14 Mar 2020 21:37:33 GMT +- request: + method: get + uri: https://slack.com/api/bogus.call?token=SLACK_TOKEN + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '76' + Connection: + - keep-alive + Date: + - Sat, 14 Mar 2020 21:46:34 GMT + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Access-Control-Allow-Headers: + - slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, + x-b3-sampled, x-b3-flags + Referrer-Policy: + - no-referrer + X-Slack-Backend: + - h + Access-Control-Expose-Headers: + - x-slack-req-id, retry-after + Vary: + - Accept-Encoding + X-Content-Type-Options: + - nosniff + X-Slack-Req-Id: + - 0a45a6b1db8ac51c7397faedafe43e93 + X-Xss-Protection: + - '0' + Access-Control-Allow-Origin: + - "*" + X-Via: + - haproxy-www-37rz + X-Cache: + - Miss from cloudfront + Via: + - 1.1 14ebd2119b0260233f69a56e7943bedb.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - ORD50-C1 + X-Amz-Cf-Id: + - EE2IJhkj6LHWI3ZRjykAk1rWReXUKBofd8fcI2L0Sk6_XipZmwDc7Q== + body: + encoding: ASCII-8BIT + string: '{"ok":false,"error":"unknown_method","req_method":"bogus.call"}' + http_version: null + recorded_at: Sat, 14 Mar 2020 21:46:34 GMT +recorded_with: VCR 5.1.0 diff --git a/test/channel_test.rb b/test/channel_test.rb index ae47430e..3d98c41c 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,13 +1,20 @@ require_relative "test_helper" -xdescribe "" do - it "" do - - - end +describe "recipient channel factory self.create" do - it "" do - + it "self.create works with CHANNEL name" do + recipient = Channel.create("general", "channel_name") + + expect(recipient).must_be_instance_of Channel + expect(recipient.name).must_equal "general" + end - end -end + + it "self.create works with CHANNEL id" do + recipient = Channel.create("A100", "channel_id") + + expect(recipient).must_be_instance_of Channel + expect(recipient.id).must_equal "A100" + end + +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 1ca6a054..2672e386 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -8,59 +8,28 @@ recipient = Recipient.new expect(recipient).must_be_instance_of Recipient - expect(recipient.user_name).must_equal nil + expect(recipient.name).must_equal nil + expect(recipient.id).must_equal nil end it "initializes with some arguments" do - recipient = Recipient.new(user_name = "Ada", user_id = nil, channel_name = "Ada's Channel", channel_id = nil) - recipient2 = Recipient.new(user_name = nil, user_id = 100, channel_name = nil, channel_id = 200) - recipient3 = Recipient.new(user_name = nil, user_id = nil, channel_name = nil, channel_id = "test") + recipient = Recipient.new(name = "Ada", id = nil) + recipient2 = Recipient.new(name = nil, id = 100) + recipient3 = Recipient.new(name = nil, id = nil) expect(recipient).must_be_instance_of Recipient - expect(recipient.user_name).must_equal "Ada" - expect(recipient.channel_name).must_equal "Ada's Channel" + expect(recipient.name).must_equal "Ada" + expect(recipient.id).must_equal nil expect(recipient2).must_be_instance_of Recipient - expect(recipient2.user_id).must_equal 100 - expect(recipient2.channel_id).must_equal 200 + expect(recipient2.id).must_equal 100 + expect(recipient2.name).must_equal nil expect(recipient3).must_be_instance_of Recipient - expect(recipient3.user_id).must_equal nil - expect(recipient3.user_name).must_equal nil - expect(recipient3.channel_id).must_equal "test" + expect(recipient3.id).must_equal nil + expect(recipient3.name).must_equal nil + end end -describe "recipient factories" do - it "self.create_recipient_from_name creates recipient with USER name" do - recipient = Recipient.create_recipient_from_name("Ada", "user") - - expect(recipient).must_be_instance_of Recipient - expect(recipient.user_name).must_equal "Ada" - end - - it "self.create_recipient_from_name creates recipient with CHANNEL name" do - recipient = Recipient.create_recipient_from_name("general", "channel") - - expect(recipient).must_be_instance_of Recipient - expect(recipient.channel_name).must_equal "general" - - end - - it "create_recipient_from_ID creates recipient with USER id" do - recipient = Recipient.create_recipient_from_id("A100", "user") - - expect(recipient).must_be_instance_of Recipient - expect(recipient.user_id).must_equal "A100" - end - - it "create_recipient_from_name creates recipient with CHANNEL ID" do - recipient = Recipient.create_recipient_from_id("A100", "channel") - - expect(recipient).must_be_instance_of Recipient - expect(recipient.channel_id).must_equal "A100" - - end - -end diff --git a/test/user_test.rb b/test/user_test.rb index 211269cb..a8fca1ca 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,6 +1,24 @@ require_relative "test_helper" +describe "recipient user factory self.create" do + it "self.create works with user name" do + recipient = User.create("Ada", "user_name") + + expect(recipient).must_be_instance_of User + expect(recipient.name).must_equal "Ada" + end + + + it "self.create works with USER id" do + recipient = User.create("A100", "user_id") + + expect(recipient).must_be_instance_of User + expect(recipient.id).must_equal "A100" + end + + +end # xdescribe "user" # xdescribe "self.get" do # it "get s a list of users " do diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 3b35f833..8338e834 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -27,7 +27,7 @@ end end -xdescribe "list_users" do # look in to test the 2 listing functions do i need to break the functin apart? +describe "list_users" do # look in to test the 2 listing functions do i need to break the functin apart? it "outputs list of users" do result = {} @@ -42,7 +42,7 @@ it "raises an error when a call fails" do VCR.use_cassette("list_of_users") do - expect {User.get("https://slack.com/api/bogus.call")}.must_raise SlackAPIError #from Devins live code + expect {Workspace.get("https://slack.com/api/bogus.call")}.must_raise SlackAPIError #from Devins live code end end end From 3d3d10f6ec0b89589cebfea1af125ac899e63eb4 Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Sat, 14 Mar 2020 18:40:46 -0700 Subject: [PATCH 08/10] Hey wave 2 works.... so i am moving forward even though some items are bad. --- lib/slack.rb | 22 ++++---- lib/workspace.rb | 112 +++++++++++++++++++++++++++-------------- test/workspace_test.rb | 16 ++++++ 3 files changed, 101 insertions(+), 49 deletions(-) diff --git a/lib/slack.rb b/lib/slack.rb index ad25fe52..6fa7a3d7 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -42,16 +42,18 @@ def options(workspace) channel_info = workspace.name_or_id("channel") options(workspace) when "details" - # if workspace.selected_recipient.class == User - # puts workspace.selected_recipient.name - # puts workspace.selected_recipient.real_name - # puts workspace.selected_recipient.id - # elsif workspace.selected_recipient.class == Channel - # puts selected_recipient.channel["topic"]["value"] - # puts selected_recipient.channel["num_members"] - # puts selected_recipient.channel["id"] - # end - + if workspace.selected_type == "user" + puts "Username: #{workspace.selected_recipient["name"]}" + puts "Name: #{workspace.selected_recipient["real_name"]}" + puts "Id: #{workspace.selected_recipient["id"]}" + elsif workspace.selected_type == "channel" + puts "Topic: #{workspace.selected_recipient["topic"]["value"]}" + puts "Number of Members: #{workspace.selected_recipient["num_members"]}" + puts "Channel ID: #{workspace.selected_recipient["id"]}" + else + "You have not selected a recipient." + end + options(workspace) when "quit" return end diff --git a/lib/workspace.rb b/lib/workspace.rb index 35356277..b2669527 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -12,12 +12,13 @@ KEY = ENV["SLACK_TOKEN"] class Workspace - attr_accessor :channels, :users, :selected_recipient + attr_accessor :channels, :users, :selected_recipient, :selected_type def initialize @users = Workspace.get("https://slack.com/api/users.list") @channels = Workspace.get("https://slack.com/api/conversations.list") @selected_recipient = nil + @selected_type = nil end def self.get(url) @@ -60,50 +61,83 @@ def list_users end + def name_or_id(type) # TODO break this up into methods select channel and select user to better match given design + puts "Please provide a user name or ID for your channel or user" + answer = gets.chomp - - def name_or_id(type) - puts "What information will you be providing? Please type 'name' or 'id'." - answer = gets.chomp.downcase - - while answer != "name" && answer != "id" - puts "Try again? Please type 'name' or 'id'." - answer = gets.chomp.downcase - end - - # @TODO: Refactor this. Stop using parameters as variable names, lots of other duplication. Jesus this is bad. if type == "user" - if answer == "name" - puts "Please provide the name:" - provided_name = gets.chomp - recipient = User.create(provided_name, "user_#{answer}") - @selected_recipient = recipient - puts "Thank you, I have noted your selection" - elsif answer == "id" - puts "Please provide the id:" - provided_id = gets.chomp - recipient = User.create(provided_id, "user_#{answer}") - @selected_recipient = recipient - puts "Thank you, I have noted your selection" + users["members"].each do |member| + if member["name"] == answer + @selected_recipient = member + @selected_type = "user" + puts "Thank you, I have noted your selection" + return + elsif member["id"] == answer + @selected_recipient = member + @selected_type = "user" + puts "Thank you, I have noted your selection" + return + end end - end - - if type == "channel" - if answer == "name" - puts "Please provide the name:" - provided_name = gets.chomp - recipient = Channel.create(provided_name, "channel_#{answer}") - @selected_recipient = recipient - puts "Thank you, I have noted your selection" - elsif answer == "id" - puts "Please provide the id:" - provided_id = gets.chomp - recipient = Channel.create(provided_id, "channel_#{answer}") - @selected_recipient = recipient - puts "Thank you, I have noted your selection" + puts "You did not provide a vaild recipient" + return + elsif type == "channel" + channels["channels"].each do |channel| + if channel["name"] == answer + @selected_recipient = channel + @selected_type = "channel" + puts "Thank you, I have noted your selection" + return + elsif channel["id"] == answer + @selected_recipient = channel + @selected_type = "channel" + puts "Thank you, I have noted your selection" + return + end end + puts "You did not provide a vaild recipient" + return end end + + # while answer != "name" && answer != "id" + # puts "Try again? Please type 'name' or 'id'." + # answer = gets.chomp.downcase + # end + + # @TODO: Refactor this. Stop using parameters as variable names, lots of other duplication. Jesus this is bad. + # if type == "user" + # if answer == "name" + # puts "Please provide the name:" + # provided_name = gets.chomp + # recipient = User.create(provided_name, "user_#{answer}") + # @selected_recipient = recipient + # puts "Thank you, I have noted your selection" + # elsif answer == "id" + # puts "Please provide the id:" + # provided_id = gets.chomp + # recipient = User.create(provided_id, "user_#{answer}") + # @selected_recipient = recipient + # puts "Thank you, I have noted your selection" + # end + # end + + # if type == "channel" + # if answer == "name" + # puts "Please provide the name:" + # provided_name = gets.chomp + # recipient = Channel.create(provided_name, "channel_#{answer}") + # @selected_recipient = recipient + # puts "Thank you, I have noted your selection" + # elsif answer == "id" + # puts "Please provide the id:" + # provided_id = gets.chomp + # recipient = Channel.create(provided_id, "channel_#{answer}") + # @selected_recipient = recipient + # puts "Thank you, I have noted your selection" + # end + # end + # end end class SlackAPIError < StandardError ; end \ No newline at end of file diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 8338e834..34d6d836 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -27,6 +27,8 @@ end end + + describe "list_users" do # look in to test the 2 listing functions do i need to break the functin apart? it "outputs list of users" do @@ -47,6 +49,20 @@ end end +# describe "name or id" do + +# it "" +# users = +# VCR.use_cassette("list_of_users") do +# users = Workspace.get("https://slack.com/api/users.list") +# end + +# name_or_id("user") + + + +# end + # xdescribe "list user" # xdescribe "self.get" do # xit "get s a list of users " do From 9a777b83b2e2d8d36dc39bef6c20d967d4f93715 Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Sun, 15 Mar 2020 14:45:49 -0700 Subject: [PATCH 09/10] well code works for wave three! but I need tests and I need to put something in user and channel.... --- lib/channel.rb | 16 ++---- lib/recipient.rb | 116 ++++++++++++++++++++++++++----------------- lib/slack.rb | 11 ++-- lib/user.rb | 10 +--- lib/workspace.rb | 24 ++++++--- test/channel_test.rb | 24 ++++----- test/test_helper.rb | 8 +-- test/user_test.rb | 24 ++++----- 8 files changed, 128 insertions(+), 105 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 157e846e..4ffd0ac2 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -3,22 +3,12 @@ class Channel < Recipient attr_reader :topic, :member_count - def initialize#(topic:, member_count:, name:, slack_id:) + def initialize super(name: name, id: id) - @topic = topic - @member_count = member_count - end - - def self.create(identifier, identifier_type) - recipient = Channel.new - if identifier_type == "channel_name" - recipient.name = identifier - elsif identifier_type == "channel_id" - recipient.id = identifier - end - return recipient + end + def details end diff --git a/lib/recipient.rb b/lib/recipient.rb index 7d118b43..76b95dcd 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -1,5 +1,14 @@ +require 'dotenv' +require 'httparty' + + +Dotenv.load + +BASE_URL = "https://slack.com/api/chat.postMessage" +KEY = ENV["SLACK_TOKEN"] + + class Recipient - #attr_accessor :user_name, :user_id, :channel_name, :channel_id attr_accessor :name, :id def initialize(name = nil, id = nil) @name = name @@ -10,49 +19,66 @@ def self.create raise NotImplementedError end - def self.details(recipient) - if recipient.user_name != nil - workspace = Workspace.new - users = workspace.users - users["members"].each do |member| - if member["name"] == recipient.user_name - puts member["name"] - puts member["real_name"] - puts member["id"] - end - end - - elsif @user_id != nil - workspace = Workspace.new - users = workspace.users - users["members"].each do |member| - if member["id"] == recipient.user_id - puts member["name"] - puts member["real_name"] - puts member["id"] - end - end - elsif @channel_name != nil - workspace = Workspace.new - channels = workspace.channels - channels["channels"].each do |channel| - if channel["name"] == recipient.channel_name - puts channel["topic"]["value"] - puts channel["num_members"] - puts channel["id"] - end - end - elsif @channel_id != nil - workspace = Workspace.new - channels = workspace.channels - puts "do you see me (self.details)?" - channels["channels"].each do |channel| - if channel["id"] == recipient.channel_id - puts channel["topic"]["value"] - puts channel["num_members"] - puts channel["id"] - end - end - end + + def send_message(message,selected_recipient) + puts "do you see this in send message?" + puts selected_recipient.id + response = HTTParty.post( + "#{BASE_URL}", { + #headers: {'Content-Type' => 'application/json'}, + body: { + token: KEY, + channel: selected_recipient.id, + text: message + } + }) + puts "message sent" + return response.code == 200 && response.parsed_response["ok"] end + + # def self.details(recipient) + # if recipient.user_name != nil + # workspace = Workspace.new + # users = workspace.users + # users["members"].each do |member| + # if member["name"] == recipient.user_name + # puts member["name"] + # puts member["real_name"] + # puts member["id"] + # end + # end + + # elsif @user_id != nil + # workspace = Workspace.new + # users = workspace.users + # users["members"].each do |member| + # if member["id"] == recipient.user_id + # puts member["name"] + # puts member["real_name"] + # puts member["id"] + # end + # end + # elsif @channel_name != nil + # workspace = Workspace.new + # channels = workspace.channels + # channels["channels"].each do |channel| + # if channel["name"] == recipient.channel_name + # puts channel["topic"]["value"] + # puts channel["num_members"] + # puts channel["id"] + # end + # end + # elsif @channel_id != nil + # workspace = Workspace.new + # channels = workspace.channels + # puts "do you see me (self.details)?" + # channels["channels"].each do |channel| + # if channel["id"] == recipient.channel_id + # puts channel["topic"]["value"] + # puts channel["num_members"] + # puts channel["id"] + # end + # end + # end + # end end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 6fa7a3d7..402e8b54 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -18,12 +18,12 @@ def main # @TODO: Refactor to make this not recursive. Nice to have, # but not required. def options(workspace) - puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + puts "What would you like to do? Please type one of the following:\n- list users\n- list channels\n- select user\n- select channel\n- details\n- send message\n- quit" user_input = gets.chomp.downcase - valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "quit"] + valid_inputs = ["list users", "list channels", "select user", "select channel", "details", "send message", "quit"] until valid_inputs.include?(user_input) - puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- quit" + puts "Please type a valid response :\n- list users\n- list channels\n- select user\n- select channel\n- details\n- send message\n- quit" user_input = gets.chomp.downcase end @@ -42,7 +42,7 @@ def options(workspace) channel_info = workspace.name_or_id("channel") options(workspace) when "details" - if workspace.selected_type == "user" + if workspace.selected_type == "user" # TODO I think this needs to be broken out in to user and channel puts "Username: #{workspace.selected_recipient["name"]}" puts "Name: #{workspace.selected_recipient["real_name"]}" puts "Id: #{workspace.selected_recipient["id"]}" @@ -54,6 +54,9 @@ def options(workspace) "You have not selected a recipient." end options(workspace) + when "send message" + workspace.send_message_if_selected + options(workspace) when "quit" return end diff --git a/lib/user.rb b/lib/user.rb index 4ddb09f1..896ab1eb 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -14,14 +14,6 @@ def initialize #(real_name:, status_text:, status_emoji:, name:, slack_id:) @status_emoji = status_emoji end - def self.create(identifier, identifier_type) - recipient = User.new - if identifier_type == "user_name" - recipient.name = identifier - elsif identifier_type == "user_id" - recipient.id = identifier - end - return recipient - end + end #end diff --git a/lib/workspace.rb b/lib/workspace.rb index b2669527..ebe8011a 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -3,8 +3,8 @@ require 'httparty' require_relative 'recipient' -require_relative 'user' -require_relative 'channel' +# require_relative 'user' +# require_relative 'channel' # @TODO: Load environment objects and key in an actual method Dotenv.load @@ -61,6 +61,18 @@ def list_users end + + def send_message_if_selected + if selected_recipient != nil + puts "Lets send a message!" + puts "Please type the message you want to send." + message = gets.chomp + selected_recipient.send_message(message, selected_recipient) + else + puts "You don't have any recipient selected" + end + end + def name_or_id(type) # TODO break this up into methods select channel and select user to better match given design puts "Please provide a user name or ID for your channel or user" answer = gets.chomp @@ -68,12 +80,12 @@ def name_or_id(type) # TODO break this up into methods select channel and selec if type == "user" users["members"].each do |member| if member["name"] == answer - @selected_recipient = member + @selected_recipient = Recipient.new(member["name"],member["id"]) @selected_type = "user" puts "Thank you, I have noted your selection" return elsif member["id"] == answer - @selected_recipient = member + @selected_recipient = Recipient.new(member["name"],member["id"]) @selected_type = "user" puts "Thank you, I have noted your selection" return @@ -84,12 +96,12 @@ def name_or_id(type) # TODO break this up into methods select channel and selec elsif type == "channel" channels["channels"].each do |channel| if channel["name"] == answer - @selected_recipient = channel + @selected_recipient = Recipient.new(channel["name"],channel["id"]) @selected_type = "channel" puts "Thank you, I have noted your selection" return elsif channel["id"] == answer - @selected_recipient = channel + @selected_recipient = Recipient.new(channel["name"],channel["id"]) @selected_type = "channel" puts "Thank you, I have noted your selection" return diff --git a/test/channel_test.rb b/test/channel_test.rb index 3d98c41c..ba2c37d9 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,20 +1,20 @@ require_relative "test_helper" -describe "recipient channel factory self.create" do +# describe "channel initializes" do - it "self.create works with CHANNEL name" do - recipient = Channel.create("general", "channel_name") +# it "initializes CHANNEL with name" do +# recipient = Channel.new(name = "general") - expect(recipient).must_be_instance_of Channel - expect(recipient.name).must_equal "general" - end +# expect(recipient).must_be_instance_of Channel +# expect(recipient.name).must_equal "general" +# end - it "self.create works with CHANNEL id" do - recipient = Channel.create("A100", "channel_id") +# it "initializes with CHANNEL id" do +# recipient = Channel.new(nil, "A100") - expect(recipient).must_be_instance_of Channel - expect(recipient.id).must_equal "A100" - end +# expect(recipient).must_be_instance_of Channel +# expect(recipient.id).must_equal "A100" +# end -end \ No newline at end of file +# end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index a87f0707..b93121a9 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -15,10 +15,10 @@ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new require_relative "../lib/workspace.rb" -# require_relative "../lib/slack.rb" -# require_relative "../lib/user.rb" -# require_relative "../lib/channel.rb" -# require_relative "../lib/recipient.rb" +require_relative "../lib/slack.rb" +require_relative "../lib/user.rb" +require_relative "../lib/channel.rb" +require_relative "../lib/recipient.rb" VCR.configure do |config| config.cassette_library_dir = "test/cassettes" diff --git a/test/user_test.rb b/test/user_test.rb index a8fca1ca..fa155e16 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,24 +1,24 @@ require_relative "test_helper" -describe "recipient user factory self.create" do +# describe "user initializes" do - it "self.create works with user name" do - recipient = User.create("Ada", "user_name") +# it "user initializes with name" do +# recipient = User.new("Ada") - expect(recipient).must_be_instance_of User - expect(recipient.name).must_equal "Ada" - end +# expect(recipient).must_be_instance_of User +# expect(recipient.name).must_equal "Ada" +# end - it "self.create works with USER id" do - recipient = User.create("A100", "user_id") +# it "user initializes with id" do +# recipient = User.new(nil, "A100") - expect(recipient).must_be_instance_of User - expect(recipient.id).must_equal "A100" - end +# expect(recipient).must_be_instance_of User +# expect(recipient.id).must_equal "A100" +# end -end +# end # xdescribe "user" # xdescribe "self.get" do # it "get s a list of users " do From abe87217479efe9473a3dc8a74ca46e2111f8a1c Mon Sep 17 00:00:00 2001 From: ChelseaC13 Date: Sun, 15 Mar 2020 22:30:18 -0700 Subject: [PATCH 10/10] I did something wrong in git --- lib/channel.rb | 24 +++++++++-------- lib/recipient.rb | 56 ++++---------------------------------- lib/slack.rb | 10 ++----- lib/user.rb | 19 ++++++++----- lib/workspace.rb | 61 +++++------------------------------------- test/channel_test.rb | 34 ++++++++++++----------- test/recipient_test.rb | 31 ++++++++++++++++----- test/user_test.rb | 58 +++++++++++++-------------------------- test/workspace_test.rb | 50 ++-------------------------------- 9 files changed, 101 insertions(+), 242 deletions(-) diff --git a/lib/channel.rb b/lib/channel.rb index 4ffd0ac2..1ac47683 100644 --- a/lib/channel.rb +++ b/lib/channel.rb @@ -1,21 +1,23 @@ require_relative "recipient" class Channel < Recipient - attr_reader :topic, :member_count + attr_reader :num_members, :topic - def initialize - super(name: name, id: id) + def initialize(id, name, num_members, topic) + super(id, name) - end + @num_members = num_members + @topic = topic - - def details + if @id == nil || @name == nil || @num_members == nil || @topic == nil + raise ArgumentError, "arguments can't be nil" + end end - #------ Class Methods ------ - - #api endpoint https://api.slack.com/methods/conversations.list - def self.list_all + def details + puts "Name: #{@name}" + puts "Topic: #{@topic}" + puts "Number of Members: #{@num_members}" + puts "Channel ID: #{@id}" end - end \ No newline at end of file diff --git a/lib/recipient.rb b/lib/recipient.rb index 76b95dcd..db5f9e3e 100644 --- a/lib/recipient.rb +++ b/lib/recipient.rb @@ -5,12 +5,12 @@ Dotenv.load BASE_URL = "https://slack.com/api/chat.postMessage" -KEY = ENV["SLACK_TOKEN"] +# KEY = ENV["SLACK_TOKEN"] class Recipient attr_accessor :name, :id - def initialize(name = nil, id = nil) + def initialize(id, name) @name = name @id = id end @@ -19,13 +19,13 @@ def self.create raise NotImplementedError end + def details + raise NotImplementedError + end def send_message(message,selected_recipient) - puts "do you see this in send message?" - puts selected_recipient.id response = HTTParty.post( "#{BASE_URL}", { - #headers: {'Content-Type' => 'application/json'}, body: { token: KEY, channel: selected_recipient.id, @@ -35,50 +35,4 @@ def send_message(message,selected_recipient) puts "message sent" return response.code == 200 && response.parsed_response["ok"] end - - # def self.details(recipient) - # if recipient.user_name != nil - # workspace = Workspace.new - # users = workspace.users - # users["members"].each do |member| - # if member["name"] == recipient.user_name - # puts member["name"] - # puts member["real_name"] - # puts member["id"] - # end - # end - - # elsif @user_id != nil - # workspace = Workspace.new - # users = workspace.users - # users["members"].each do |member| - # if member["id"] == recipient.user_id - # puts member["name"] - # puts member["real_name"] - # puts member["id"] - # end - # end - # elsif @channel_name != nil - # workspace = Workspace.new - # channels = workspace.channels - # channels["channels"].each do |channel| - # if channel["name"] == recipient.channel_name - # puts channel["topic"]["value"] - # puts channel["num_members"] - # puts channel["id"] - # end - # end - # elsif @channel_id != nil - # workspace = Workspace.new - # channels = workspace.channels - # puts "do you see me (self.details)?" - # channels["channels"].each do |channel| - # if channel["id"] == recipient.channel_id - # puts channel["topic"]["value"] - # puts channel["num_members"] - # puts channel["id"] - # end - # end - # end - # end end \ No newline at end of file diff --git a/lib/slack.rb b/lib/slack.rb index 402e8b54..1cd5f4f9 100755 --- a/lib/slack.rb +++ b/lib/slack.rb @@ -42,14 +42,8 @@ def options(workspace) channel_info = workspace.name_or_id("channel") options(workspace) when "details" - if workspace.selected_type == "user" # TODO I think this needs to be broken out in to user and channel - puts "Username: #{workspace.selected_recipient["name"]}" - puts "Name: #{workspace.selected_recipient["real_name"]}" - puts "Id: #{workspace.selected_recipient["id"]}" - elsif workspace.selected_type == "channel" - puts "Topic: #{workspace.selected_recipient["topic"]["value"]}" - puts "Number of Members: #{workspace.selected_recipient["num_members"]}" - puts "Channel ID: #{workspace.selected_recipient["id"]}" + if workspace.selected_type == "user" || workspace.selected_type == "channel" + workspace.selected_recipient.details else "You have not selected a recipient." end diff --git a/lib/user.rb b/lib/user.rb index 896ab1eb..6857eb67 100644 --- a/lib/user.rb +++ b/lib/user.rb @@ -4,16 +4,21 @@ #module Slack class User < Recipient - attr_reader :real_name, :status_text, :status_emoji - - def initialize #(real_name:, status_text:, status_emoji:, name:, slack_id:) - super(id: id, name: name) + attr_reader :real_name + def initialize (id, name, real_name) + super(id, name) @real_name = real_name - @status_text = status_text - @status_emoji = status_emoji + + if @id == nil || @name == nil || @real_name == nil + raise ArgumentError, "arguments can't be nil" + end end - + def details + puts "Username: #{@name}" + puts "Name: #{@real_name}" + puts "Id: #{@id}" + end end #end diff --git a/lib/workspace.rb b/lib/workspace.rb index ebe8011a..32edbc65 100644 --- a/lib/workspace.rb +++ b/lib/workspace.rb @@ -3,8 +3,8 @@ require 'httparty' require_relative 'recipient' -# require_relative 'user' -# require_relative 'channel' +require_relative 'user' +require_relative 'channel' # @TODO: Load environment objects and key in an actual method Dotenv.load @@ -79,13 +79,8 @@ def name_or_id(type) # TODO break this up into methods select channel and selec if type == "user" users["members"].each do |member| - if member["name"] == answer - @selected_recipient = Recipient.new(member["name"],member["id"]) - @selected_type = "user" - puts "Thank you, I have noted your selection" - return - elsif member["id"] == answer - @selected_recipient = Recipient.new(member["name"],member["id"]) + if member["name"] == answer || member["id"] == answer + @selected_recipient = User.new(member["id"], member["name"], member["real_name"]) @selected_type = "user" puts "Thank you, I have noted your selection" return @@ -95,13 +90,8 @@ def name_or_id(type) # TODO break this up into methods select channel and selec return elsif type == "channel" channels["channels"].each do |channel| - if channel["name"] == answer - @selected_recipient = Recipient.new(channel["name"],channel["id"]) - @selected_type = "channel" - puts "Thank you, I have noted your selection" - return - elsif channel["id"] == answer - @selected_recipient = Recipient.new(channel["name"],channel["id"]) + if channel["name"] == answer || channel["id"] == answer + @selected_recipient = Channel.new(channel["id"], channel["name"], channel["num_members"], channel["topic"]["value"]) @selected_type = "channel" puts "Thank you, I have noted your selection" return @@ -111,45 +101,6 @@ def name_or_id(type) # TODO break this up into methods select channel and selec return end end - - # while answer != "name" && answer != "id" - # puts "Try again? Please type 'name' or 'id'." - # answer = gets.chomp.downcase - # end - - # @TODO: Refactor this. Stop using parameters as variable names, lots of other duplication. Jesus this is bad. - # if type == "user" - # if answer == "name" - # puts "Please provide the name:" - # provided_name = gets.chomp - # recipient = User.create(provided_name, "user_#{answer}") - # @selected_recipient = recipient - # puts "Thank you, I have noted your selection" - # elsif answer == "id" - # puts "Please provide the id:" - # provided_id = gets.chomp - # recipient = User.create(provided_id, "user_#{answer}") - # @selected_recipient = recipient - # puts "Thank you, I have noted your selection" - # end - # end - - # if type == "channel" - # if answer == "name" - # puts "Please provide the name:" - # provided_name = gets.chomp - # recipient = Channel.create(provided_name, "channel_#{answer}") - # @selected_recipient = recipient - # puts "Thank you, I have noted your selection" - # elsif answer == "id" - # puts "Please provide the id:" - # provided_id = gets.chomp - # recipient = Channel.create(provided_id, "channel_#{answer}") - # @selected_recipient = recipient - # puts "Thank you, I have noted your selection" - # end - # end - # end end class SlackAPIError < StandardError ; end \ No newline at end of file diff --git a/test/channel_test.rb b/test/channel_test.rb index ba2c37d9..cd5dc3cb 100644 --- a/test/channel_test.rb +++ b/test/channel_test.rb @@ -1,20 +1,24 @@ require_relative "test_helper" +describe "channel initializes" do -# describe "channel initializes" do - -# it "initializes CHANNEL with name" do -# recipient = Channel.new(name = "general") + it "channel initializes with arguments" do + recipient = Channel.new(1, "Ada", 3, "general") -# expect(recipient).must_be_instance_of Channel -# expect(recipient.name).must_equal "general" -# end + expect(recipient).must_be_instance_of Channel + expect(recipient.name).must_equal "Ada" + expect(recipient.id).must_equal 1 + expect(recipient.num_members).must_equal 3 + expect(recipient.topic).must_equal "general" + end + + it "user raises error with not enough arguments" do + expect{Channel.new()}.must_raise ArgumentError + expect{Channel.new(1)}.must_raise ArgumentError + expect{Channel.new(nil,nil,nil,nil)}.must_raise ArgumentError + expect{Channel.new(1,nil,3)}.must_raise ArgumentError + expect{Channel.new(1,"ada")}.must_raise ArgumentError + expect{Channel.new(nil,"ada")}.must_raise ArgumentError + end -# it "initializes with CHANNEL id" do -# recipient = Channel.new(nil, "A100") - -# expect(recipient).must_be_instance_of Channel -# expect(recipient.id).must_equal "A100" -# end - -# end \ No newline at end of file +end \ No newline at end of file diff --git a/test/recipient_test.rb b/test/recipient_test.rb index 2672e386..62d9f91f 100644 --- a/test/recipient_test.rb +++ b/test/recipient_test.rb @@ -4,18 +4,18 @@ describe "initialize" do - it "initializes with no arguments" do - recipient = Recipient.new + it "initializes" do + recipient = Recipient.new(1, "Ada") expect(recipient).must_be_instance_of Recipient - expect(recipient.name).must_equal nil - expect(recipient.id).must_equal nil + expect(recipient.name).must_equal "Ada" + expect(recipient.id).must_equal 1 end it "initializes with some arguments" do - recipient = Recipient.new(name = "Ada", id = nil) - recipient2 = Recipient.new(name = nil, id = 100) - recipient3 = Recipient.new(name = nil, id = nil) + recipient = Recipient.new(id = nil, name = "Ada") + recipient2 = Recipient.new(id = 100, name = nil) + recipient3 = Recipient.new(id = nil, name = nil) expect(recipient).must_be_instance_of Recipient expect(recipient.name).must_equal "Ada" @@ -33,3 +33,20 @@ end + +# Ughhhhhh I don't know, My IQ lowered this week! I'm going to sleep. +# describe "send_message" do +# it "can send a valid message" do +# VCR.use_cassette("slack-posts") do +# response = Recipient.send_message("Hey I can post messages!", "UV85Q5X6K") +# expect(response).must_equal true +# end +# end +# end + + + + + + + diff --git a/test/user_test.rb b/test/user_test.rb index fa155e16..5aecea87 100644 --- a/test/user_test.rb +++ b/test/user_test.rb @@ -1,46 +1,24 @@ require_relative "test_helper" -# describe "user initializes" do +describe "user initializes" do -# it "user initializes with name" do -# recipient = User.new("Ada") + it "user initializes with name" do + recipient = User.new(1, "Ada", "AdaLove") -# expect(recipient).must_be_instance_of User -# expect(recipient.name).must_equal "Ada" -# end + expect(recipient).must_be_instance_of User + expect(recipient.name).must_equal "Ada" + expect(recipient.id).must_equal 1 + expect(recipient.real_name).must_equal "AdaLove" + end + it "user raises error with not enough arguments" do + + expect{User.new()}.must_raise ArgumentError + expect{User.new(1)}.must_raise ArgumentError + expect{User.new(nil,nil,nil)}.must_raise ArgumentError + expect{User.new(1,nil,"ada")}.must_raise ArgumentError + expect{User.new(1,"ada")}.must_raise ArgumentError + expect{User.new(nil,"ada")}.must_raise ArgumentError + end -# it "user initializes with id" do -# recipient = User.new(nil, "A100") - -# expect(recipient).must_be_instance_of User -# expect(recipient.id).must_equal "A100" -# end - - -# end -# xdescribe "user" -# xdescribe "self.get" do -# it "get s a list of users " do -# result = {} -# VCR.use_cassette ("user-list-endpoint") do -# result = User.get("https://slack.com/api/users.list") -# end - -# expect(results).must_be_kind_of HTTParty::Response -# expect(result.("ok")).must_equal true -# end - -# it "raises an error when a call fails" do -# VCR.use_cassette ("user-list-endpoint") do - -# expect{User.get(https://slack.com/api/bogus.endpoint)}.must_raise SlackAPIError -# end -# end -# end - -# # xderscribe "self.list" do -# # it "return a valid list of the users" - - -# # end \ No newline at end of file +end diff --git a/test/workspace_test.rb b/test/workspace_test.rb index 34d6d836..ffa4adc0 100644 --- a/test/workspace_test.rb +++ b/test/workspace_test.rb @@ -2,7 +2,6 @@ require 'httparty' describe "getting number of channels" do - it "can get number of channels" do VCR.use_cassette("channels") do response = Workspace.new @@ -10,13 +9,10 @@ expect(response.channels).wont_be_nil expect(response.num_of_channels).must_equal 5 end - - end - + end end describe "getting number of users" do - it "can get number of users" do VCR.use_cassette("users") do response = Workspace.new @@ -28,9 +24,7 @@ end - -describe "list_users" do # look in to test the 2 listing functions do i need to break the functin apart? - +describe "list_users" do it "outputs list of users" do result = {} VCR.use_cassette("list_of_users") do @@ -39,7 +33,6 @@ expect(result).must_be_kind_of HTTParty::Response expect(result["ok"]).must_equal true - end it "raises an error when a call fails" do @@ -49,43 +42,4 @@ end end -# describe "name or id" do - -# it "" -# users = -# VCR.use_cassette("list_of_users") do -# users = Workspace.get("https://slack.com/api/users.list") -# end - -# name_or_id("user") - - - -# end - -# xdescribe "list user" -# xdescribe "self.get" do -# xit "get s a list of users " do -# result = {} -# VCR.use_cassette ("user-list-endpoint") do -# result = User.get("https://slack.com/api/users.list") -# end - -# expect(results).must_be_kind_of HTTParty::Response -# expect(result.("ok")).must_equal true -# end - -# xit "raises an error when a call fails" do -# VCR.use_cassette ("user-list-endpoint") do - -# expect{User.get(https://slack.com/api/bogus.endpoint)}.must_raise SlackAPIError -# end -# end -# end - -# xderscribe "self.list" do -# it "return a valid list of the users" - - -# end