summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nlopes/slack/examples
diff options
context:
space:
mode:
authorWim <wim@42.be>2016-09-05 16:34:37 +0200
committerWim <wim@42.be>2016-09-05 16:34:37 +0200
commitb30e85836e575974bac1b2ea91e9b6c2dd39fe44 (patch)
treeb3aa5d148e436cacd6c737ad56ba3fc0b9369e26 /vendor/github.com/nlopes/slack/examples
parente449a97bd0114e55c2a73aa79b061b55d755aa16 (diff)
downloadmatterbridge-msglm-b30e85836e575974bac1b2ea91e9b6c2dd39fe44.tar.gz
matterbridge-msglm-b30e85836e575974bac1b2ea91e9b6c2dd39fe44.tar.bz2
matterbridge-msglm-b30e85836e575974bac1b2ea91e9b6c2dd39fe44.zip
Add Slack support
Diffstat (limited to 'vendor/github.com/nlopes/slack/examples')
-rw-r--r--vendor/github.com/nlopes/slack/examples/channels/channels.go19
-rw-r--r--vendor/github.com/nlopes/slack/examples/files/files.go30
-rw-r--r--vendor/github.com/nlopes/slack/examples/groups/groups.go22
-rw-r--r--vendor/github.com/nlopes/slack/examples/messages/messages.go32
-rw-r--r--vendor/github.com/nlopes/slack/examples/pins/pins.go123
-rw-r--r--vendor/github.com/nlopes/slack/examples/reactions/reactions.go126
-rw-r--r--vendor/github.com/nlopes/slack/examples/stars/stars.go46
-rw-r--r--vendor/github.com/nlopes/slack/examples/users/users.go17
-rw-r--r--vendor/github.com/nlopes/slack/examples/websocket/websocket.go58
9 files changed, 473 insertions, 0 deletions
diff --git a/vendor/github.com/nlopes/slack/examples/channels/channels.go b/vendor/github.com/nlopes/slack/examples/channels/channels.go
new file mode 100644
index 00000000..a4465bdb
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/channels/channels.go
@@ -0,0 +1,19 @@
+package main
+
+import (
+ "fmt"
+
+ "github.com/nlopes/slack"
+)
+
+func main() {
+ api := slack.New("YOUR_TOKEN_HERE")
+ channels, err := api.GetChannels(false)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ return
+ }
+ for _, channel := range channels {
+ fmt.Println(channel.ID)
+ }
+}
diff --git a/vendor/github.com/nlopes/slack/examples/files/files.go b/vendor/github.com/nlopes/slack/examples/files/files.go
new file mode 100644
index 00000000..bb7b4e50
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/files/files.go
@@ -0,0 +1,30 @@
+package main
+
+import (
+ "fmt"
+
+ "github.com/nlopes/slack"
+)
+
+func main() {
+ api := slack.New("YOUR_TOKEN_HERE")
+ params := slack.FileUploadParameters{
+ Title: "Batman Example",
+ //Filetype: "txt",
+ File: "example.txt",
+ //Content: "Nan Nan Nan Nan Nan Nan Nan Nan Batman",
+ }
+ file, err := api.UploadFile(params)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ return
+ }
+ fmt.Printf("Name: %s, URL: %s\n", file.Name, file.URL)
+
+ err = api.DeleteFile(file.ID)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ return
+ }
+ fmt.Printf("File %s deleted successfully.\n", file.Name)
+}
diff --git a/vendor/github.com/nlopes/slack/examples/groups/groups.go b/vendor/github.com/nlopes/slack/examples/groups/groups.go
new file mode 100644
index 00000000..2af215d1
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/groups/groups.go
@@ -0,0 +1,22 @@
+package main
+
+import (
+ "fmt"
+
+ "github.com/nlopes/slack"
+)
+
+func main() {
+ api := slack.New("YOUR_TOKEN_HERE")
+ // If you set debugging, it will log all requests to the console
+ // Useful when encountering issues
+ // api.SetDebug(true)
+ groups, err := api.GetGroups(false)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ return
+ }
+ for _, group := range groups {
+ fmt.Printf("ID: %s, Name: %s\n", group.ID, group.Name)
+ }
+}
diff --git a/vendor/github.com/nlopes/slack/examples/messages/messages.go b/vendor/github.com/nlopes/slack/examples/messages/messages.go
new file mode 100644
index 00000000..b3ea87f3
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/messages/messages.go
@@ -0,0 +1,32 @@
+package main
+
+import (
+ "fmt"
+
+ "github.com/nlopes/slack"
+)
+
+func main() {
+ api := slack.New("YOUR_TOKEN_HERE")
+ params := slack.PostMessageParameters{}
+ attachment := slack.Attachment{
+ Pretext: "some pretext",
+ Text: "some text",
+ // Uncomment the following part to send a field too
+ /*
+ Fields: []slack.AttachmentField{
+ slack.AttachmentField{
+ Title: "a",
+ Value: "no",
+ },
+ },
+ */
+ }
+ params.Attachments = []slack.Attachment{attachment}
+ channelID, timestamp, err := api.PostMessage("CHANNEL_ID", "Some text", params)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ return
+ }
+ fmt.Printf("Message successfully sent to channel %s at %s", channelID, timestamp)
+}
diff --git a/vendor/github.com/nlopes/slack/examples/pins/pins.go b/vendor/github.com/nlopes/slack/examples/pins/pins.go
new file mode 100644
index 00000000..d225184c
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/pins/pins.go
@@ -0,0 +1,123 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+
+ "github.com/nlopes/slack"
+)
+
+/*
+ WARNING: This example is destructive in the sense that it create a channel called testpinning
+*/
+func main() {
+ var (
+ apiToken string
+ debug bool
+ )
+
+ flag.StringVar(&apiToken, "token", "YOUR_TOKEN_HERE", "Your Slack API Token")
+ flag.BoolVar(&debug, "debug", false, "Show JSON output")
+ flag.Parse()
+
+ api := slack.New(apiToken)
+ if debug {
+ api.SetDebug(true)
+ }
+
+ var (
+ postAsUserName string
+ postAsUserID string
+ postToChannelID string
+ )
+
+ // Find the user to post as.
+ authTest, err := api.AuthTest()
+ if err != nil {
+ fmt.Printf("Error getting channels: %s\n", err)
+ return
+ }
+
+ channelName := "testpinning"
+
+ // Post as the authenticated user.
+ postAsUserName = authTest.User
+ postAsUserID = authTest.UserID
+
+ // Create a temporary channel
+ channel, err := api.CreateChannel(channelName)
+
+ if err != nil {
+ // If the channel exists, that means we just need to unarchive it
+ if err.Error() == "name_taken" {
+ err = nil
+ channels, err := api.GetChannels(false)
+ if err != nil {
+ fmt.Println("Could not retrieve channels")
+ return
+ }
+ for _, archivedChannel := range channels {
+ if archivedChannel.Name == channelName {
+ if archivedChannel.IsArchived {
+ err = api.UnarchiveChannel(archivedChannel.ID)
+ if err != nil {
+ fmt.Printf("Could not unarchive %s: %s\n", archivedChannel.ID, err)
+ return
+ }
+ }
+ channel = &archivedChannel
+ break
+ }
+ }
+ }
+ if err != nil {
+ fmt.Printf("Error setting test channel for pinning: %s\n", err)
+ return
+ }
+ }
+ postToChannelID = channel.ID
+
+ fmt.Printf("Posting as %s (%s) in channel %s\n", postAsUserName, postAsUserID, postToChannelID)
+
+ // Post a message.
+ postParams := slack.PostMessageParameters{}
+ channelID, timestamp, err := api.PostMessage(postToChannelID, "Is this any good?", postParams)
+ if err != nil {
+ fmt.Printf("Error posting message: %s\n", err)
+ return
+ }
+
+ // Grab a reference to the message.
+ msgRef := slack.NewRefToMessage(channelID, timestamp)
+
+ // Add message pin to channel
+ if err := api.AddPin(channelID, msgRef); err != nil {
+ fmt.Printf("Error adding pin: %s\n", err)
+ return
+ }
+
+ // List all of the users pins.
+ listPins, _, err := api.ListPins(channelID)
+ if err != nil {
+ fmt.Printf("Error listing pins: %s\n", err)
+ return
+ }
+ fmt.Printf("\n")
+ fmt.Printf("All pins by %s...\n", authTest.User)
+ for _, item := range listPins {
+ fmt.Printf(" > Item type: %s\n", item.Type)
+ }
+
+ // Remove the pin.
+ err = api.RemovePin(channelID, msgRef)
+ if err != nil {
+ fmt.Printf("Error remove pin: %s\n", err)
+ return
+ }
+
+ if err = api.ArchiveChannel(channelID); err != nil {
+ fmt.Printf("Error archiving channel: %s\n", err)
+ return
+ }
+
+}
diff --git a/vendor/github.com/nlopes/slack/examples/reactions/reactions.go b/vendor/github.com/nlopes/slack/examples/reactions/reactions.go
new file mode 100644
index 00000000..753f0d25
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/reactions/reactions.go
@@ -0,0 +1,126 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+
+ "github.com/nlopes/slack"
+)
+
+func main() {
+ var (
+ apiToken string
+ debug bool
+ )
+
+ flag.StringVar(&apiToken, "token", "YOUR_TOKEN_HERE", "Your Slack API Token")
+ flag.BoolVar(&debug, "debug", false, "Show JSON output")
+ flag.Parse()
+
+ api := slack.New(apiToken)
+ if debug {
+ api.SetDebug(true)
+ }
+
+ var (
+ postAsUserName string
+ postAsUserID string
+ postToUserName string
+ postToUserID string
+ postToChannelID string
+ )
+
+ // Find the user to post as.
+ authTest, err := api.AuthTest()
+ if err != nil {
+ fmt.Printf("Error getting channels: %s\n", err)
+ return
+ }
+
+ // Post as the authenticated user.
+ postAsUserName = authTest.User
+ postAsUserID = authTest.UserID
+
+ // Posting to DM with self causes a conversation with slackbot.
+ postToUserName = authTest.User
+ postToUserID = authTest.UserID
+
+ // Find the channel.
+ _, _, chanID, err := api.OpenIMChannel(postToUserID)
+ if err != nil {
+ fmt.Printf("Error opening IM: %s\n", err)
+ return
+ }
+ postToChannelID = chanID
+
+ fmt.Printf("Posting as %s (%s) in DM with %s (%s), channel %s\n", postAsUserName, postAsUserID, postToUserName, postToUserID, postToChannelID)
+
+ // Post a message.
+ postParams := slack.PostMessageParameters{}
+ channelID, timestamp, err := api.PostMessage(postToChannelID, "Is this any good?", postParams)
+ if err != nil {
+ fmt.Printf("Error posting message: %s\n", err)
+ return
+ }
+
+ // Grab a reference to the message.
+ msgRef := slack.NewRefToMessage(channelID, timestamp)
+
+ // React with :+1:
+ if err := api.AddReaction("+1", msgRef); err != nil {
+ fmt.Printf("Error adding reaction: %s\n", err)
+ return
+ }
+
+ // React with :-1:
+ if err := api.AddReaction("cry", msgRef); err != nil {
+ fmt.Printf("Error adding reaction: %s\n", err)
+ return
+ }
+
+ // Get all reactions on the message.
+ msgReactions, err := api.GetReactions(msgRef, slack.NewGetReactionsParameters())
+ if err != nil {
+ fmt.Printf("Error getting reactions: %s\n", err)
+ return
+ }
+ fmt.Printf("\n")
+ fmt.Printf("%d reactions to message...\n", len(msgReactions))
+ for _, r := range msgReactions {
+ fmt.Printf(" %d users say %s\n", r.Count, r.Name)
+ }
+
+ // List all of the users reactions.
+ listReactions, _, err := api.ListReactions(slack.NewListReactionsParameters())
+ if err != nil {
+ fmt.Printf("Error listing reactions: %s\n", err)
+ return
+ }
+ fmt.Printf("\n")
+ fmt.Printf("All reactions by %s...\n", authTest.User)
+ for _, item := range listReactions {
+ fmt.Printf("%d on a %s...\n", len(item.Reactions), item.Type)
+ for _, r := range item.Reactions {
+ fmt.Printf(" %s (along with %d others)\n", r.Name, r.Count-1)
+ }
+ }
+
+ // Remove the :cry: reaction.
+ err = api.RemoveReaction("cry", msgRef)
+ if err != nil {
+ fmt.Printf("Error remove reaction: %s\n", err)
+ return
+ }
+
+ // Get all reactions on the message.
+ msgReactions, err = api.GetReactions(msgRef, slack.NewGetReactionsParameters())
+ if err != nil {
+ fmt.Printf("Error getting reactions: %s\n", err)
+ return
+ }
+ fmt.Printf("\n")
+ fmt.Printf("%d reactions to message after removing cry...\n", len(msgReactions))
+ for _, r := range msgReactions {
+ fmt.Printf(" %d users say %s\n", r.Count, r.Name)
+ }
+}
diff --git a/vendor/github.com/nlopes/slack/examples/stars/stars.go b/vendor/github.com/nlopes/slack/examples/stars/stars.go
new file mode 100644
index 00000000..d20c3dcf
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/stars/stars.go
@@ -0,0 +1,46 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+
+ "github.com/nlopes/slack"
+)
+
+func main() {
+ var (
+ apiToken string
+ debug bool
+ )
+
+ flag.StringVar(&apiToken, "token", "YOUR_TOKEN_HERE", "Your Slack API Token")
+ flag.BoolVar(&debug, "debug", false, "Show JSON output")
+ flag.Parse()
+
+ api := slack.New(apiToken)
+ if debug {
+ api.SetDebug(true)
+ }
+
+ // Get all stars for the usr.
+ params := slack.NewStarsParameters()
+ starredItems, _, err := api.GetStarred(params)
+ if err != nil {
+ fmt.Printf("Error getting stars: %s\n", err)
+ return
+ }
+ for _, s := range starredItems {
+ var desc string
+ switch s.Type {
+ case slack.TYPE_MESSAGE:
+ desc = s.Message.Text
+ case slack.TYPE_FILE:
+ desc = s.File.Name
+ case slack.TYPE_FILE_COMMENT:
+ desc = s.File.Name + " - " + s.Comment.Comment
+ case slack.TYPE_CHANNEL, slack.TYPE_IM, slack.TYPE_GROUP:
+ desc = s.Channel
+ }
+ fmt.Printf("Starred %s: %s\n", s.Type, desc)
+ }
+}
diff --git a/vendor/github.com/nlopes/slack/examples/users/users.go b/vendor/github.com/nlopes/slack/examples/users/users.go
new file mode 100644
index 00000000..9a6e1f6f
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/users/users.go
@@ -0,0 +1,17 @@
+package main
+
+import (
+ "fmt"
+
+ "github.com/nlopes/slack"
+)
+
+func main() {
+ api := slack.New("YOUR_TOKEN_HERE")
+ user, err := api.GetUserInfo("U023BECGF")
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ return
+ }
+ fmt.Printf("ID: %s, Fullname: %s, Email: %s\n", user.ID, user.Profile.RealName, user.Profile.Email)
+}
diff --git a/vendor/github.com/nlopes/slack/examples/websocket/websocket.go b/vendor/github.com/nlopes/slack/examples/websocket/websocket.go
new file mode 100644
index 00000000..612b97c0
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/examples/websocket/websocket.go
@@ -0,0 +1,58 @@
+package main
+
+import (
+ "fmt"
+ "log"
+ "os"
+
+ "github.com/nlopes/slack"
+)
+
+func main() {
+ api := slack.New("YOUR TOKEN HERE")
+ logger := log.New(os.Stdout, "slack-bot: ", log.Lshortfile|log.LstdFlags)
+ slack.SetLogger(logger)
+ api.SetDebug(true)
+
+ rtm := api.NewRTM()
+ go rtm.ManageConnection()
+
+Loop:
+ for {
+ select {
+ case msg := <-rtm.IncomingEvents:
+ fmt.Print("Event Received: ")
+ switch ev := msg.Data.(type) {
+ case *slack.HelloEvent:
+ // Ignore hello
+
+ case *slack.ConnectedEvent:
+ fmt.Println("Infos:", ev.Info)
+ fmt.Println("Connection counter:", ev.ConnectionCount)
+ // Replace #general with your Channel ID
+ rtm.SendMessage(rtm.NewOutgoingMessage("Hello world", "#general"))
+
+ case *slack.MessageEvent:
+ fmt.Printf("Message: %v\n", ev)
+
+ case *slack.PresenceChangeEvent:
+ fmt.Printf("Presence Change: %v\n", ev)
+
+ case *slack.LatencyReport:
+ fmt.Printf("Current latency: %v\n", ev.Value)
+
+ case *slack.RTMError:
+ fmt.Printf("Error: %s\n", ev.Error())
+
+ case *slack.InvalidAuthEvent:
+ fmt.Printf("Invalid credentials")
+ break Loop
+
+ default:
+
+ // Ignore other events..
+ // fmt.Printf("Unexpected: %v\n", msg.Data)
+ }
+ }
+ }
+}