summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nlopes/slack/slack.go
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/slack.go
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/slack.go')
-rw-r--r--vendor/github.com/nlopes/slack/slack.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/vendor/github.com/nlopes/slack/slack.go b/vendor/github.com/nlopes/slack/slack.go
new file mode 100644
index 00000000..eb686354
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/slack.go
@@ -0,0 +1,88 @@
+package slack
+
+import (
+ "errors"
+ "log"
+ "net/url"
+ "os"
+)
+
+var logger *log.Logger // A logger that can be set by consumers
+/*
+ Added as a var so that we can change this for testing purposes
+*/
+var SLACK_API string = "https://slack.com/api/"
+var SLACK_WEB_API_FORMAT string = "https://%s.slack.com/api/users.admin.%s?t=%s"
+
+type SlackResponse struct {
+ Ok bool `json:"ok"`
+ Error string `json:"error"`
+}
+
+type AuthTestResponse struct {
+ URL string `json:"url"`
+ Team string `json:"team"`
+ User string `json:"user"`
+ TeamID string `json:"team_id"`
+ UserID string `json:"user_id"`
+}
+
+type authTestResponseFull struct {
+ SlackResponse
+ AuthTestResponse
+}
+
+type Client struct {
+ config struct {
+ token string
+ }
+ info Info
+ debug bool
+}
+
+// SetLogger let's library users supply a logger, so that api debugging
+// can be logged along with the application's debugging info.
+func SetLogger(l *log.Logger) {
+ logger = l
+}
+
+func New(token string) *Client {
+ s := &Client{}
+ s.config.token = token
+ return s
+}
+
+// AuthTest tests if the user is able to do authenticated requests or not
+func (api *Client) AuthTest() (response *AuthTestResponse, error error) {
+ responseFull := &authTestResponseFull{}
+ err := post("auth.test", url.Values{"token": {api.config.token}}, responseFull, api.debug)
+ if err != nil {
+ return nil, err
+ }
+ if !responseFull.Ok {
+ return nil, errors.New(responseFull.Error)
+ }
+ return &responseFull.AuthTestResponse, nil
+}
+
+// SetDebug switches the api into debug mode
+// When in debug mode, it logs various info about what its doing
+// If you ever use this in production, don't call SetDebug(true)
+func (api *Client) SetDebug(debug bool) {
+ api.debug = debug
+ if debug && logger == nil {
+ logger = log.New(os.Stdout, "nlopes/slack", log.LstdFlags | log.Lshortfile)
+ }
+}
+
+func (api *Client) Debugf(format string, v ...interface{}) {
+ if api.debug {
+ logger.Printf(format, v...)
+ }
+}
+
+func (api *Client) Debugln(v ...interface{}) {
+ if api.debug {
+ logger.Println(v...)
+ }
+}