aboutsummaryrefslogtreecommitdiffstats
path: root/src/slack.rs
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-11-11 13:12:32 +0100
committerGustav Sörnäs <gustav@sornas.net>2020-11-11 13:12:32 +0100
commitc01c8716de4a91e4c60f61cf0bb6eaeca5cbf619 (patch)
tree0200d799a125c3aa9b85cfe5453c645c05fbb7e8 /src/slack.rs
parenta6fd44ae860ce48b6a7979a2c8b380c11fa7168e (diff)
downloadkodapa-c01c8716de4a91e4c60f61cf0bb6eaeca5cbf619.tar.gz
refactor to new files
Diffstat (limited to 'src/slack.rs')
-rw-r--r--src/slack.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/slack.rs b/src/slack.rs
new file mode 100644
index 0000000..40e465c
--- /dev/null
+++ b/src/slack.rs
@@ -0,0 +1,39 @@
+use slack_api as slack;
+use tokio::sync::mpsc;
+
+pub async fn handle(
+ token: Option<String>,
+ sender: mpsc::UnboundedSender<String>,
+ _receiver: mpsc::UnboundedReceiver<String>,
+) {
+ println!("Setting up Slack");
+
+ let token = std::env::var("SLACK_API_TOKEN")
+ .unwrap_or(token.unwrap());
+ let client = slack::default_client().unwrap();
+
+ let request = slack::rtm::StartRequest::default();
+ let response = slack::rtm::start(&client,
+ &token,
+ &request).await;
+
+ if let Ok(response) = response {
+ if let Some(channels) = response.channels {
+ let channel_names = channels
+ .iter()
+ .filter_map(|c| c.name.as_ref())
+ .collect::<Vec<_>>();
+ sender.send(format!("Got channels {:?}", channel_names).to_string()).unwrap();
+ }
+
+ if let Some(users) = response.users {
+ let user_names = users
+ .iter()
+ .filter_map(|u| u.name.as_ref())
+ .collect::<Vec<_>>();
+ sender.send(format!("Got users {:?}", user_names).to_string()).unwrap();
+ }
+ } else { //TODO NotAuth etc
+ println!("{:?}", response)
+ }
+}