summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nlopes/slack/slack.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2018-01-08 22:41:38 +0100
committerWim <wim@42.be>2018-01-08 22:41:38 +0100
commit4a96a977c0e86e22edcda40730779279334685be (patch)
treefea5efa54d17af2d3cadb4d4d5a42f57e9bb7fbe /vendor/github.com/nlopes/slack/slack.go
parent9a95293bdf74a4d02827018649b6ea0ffdef74ba (diff)
downloadmatterbridge-msglm-4a96a977c0e86e22edcda40730779279334685be.tar.gz
matterbridge-msglm-4a96a977c0e86e22edcda40730779279334685be.tar.bz2
matterbridge-msglm-4a96a977c0e86e22edcda40730779279334685be.zip
Update vendor (slack)
Diffstat (limited to 'vendor/github.com/nlopes/slack/slack.go')
-rw-r--r--vendor/github.com/nlopes/slack/slack.go114
1 files changed, 114 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..754117c1
--- /dev/null
+++ b/vendor/github.com/nlopes/slack/slack.go
@@ -0,0 +1,114 @@
+package slack
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "log"
+ "net/url"
+ "os"
+)
+
+var logger stdLogger // 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
+}
+
+// stdLogger is a logger interface compatible with both stdlib and some
+// 3rd party loggers such as logrus.
+type stdLogger interface {
+ Print(...interface{})
+ Printf(string, ...interface{})
+ Println(...interface{})
+
+ Fatal(...interface{})
+ Fatalf(string, ...interface{})
+ Fatalln(...interface{})
+
+ Panic(...interface{})
+ Panicf(string, ...interface{})
+ Panicln(...interface{})
+
+ Output(int, string) error
+}
+
+// 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 stdLogger) {
+ logger = l
+}
+
+// New creates new Client.
+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) {
+ return api.AuthTestContext(context.Background())
+}
+
+// AuthTestContext tests if the user is able to do authenticated requests or not with a custom context
+func (api *Client) AuthTestContext(ctx context.Context) (response *AuthTestResponse, error error) {
+ responseFull := &authTestResponseFull{}
+ err := post(ctx, "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.Output(2, fmt.Sprintf(format, v...))
+ }
+}
+
+func (api *Client) Debugln(v ...interface{}) {
+ if api.debug {
+ logger.Output(2, fmt.Sprintln(v...))
+ }
+}