summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/matterbridge/slack/slack.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/matterbridge/slack/slack.go')
-rw-r--r--vendor/github.com/matterbridge/slack/slack.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/vendor/github.com/matterbridge/slack/slack.go b/vendor/github.com/matterbridge/slack/slack.go
new file mode 100644
index 00000000..a13bed31
--- /dev/null
+++ b/vendor/github.com/matterbridge/slack/slack.go
@@ -0,0 +1,94 @@
+package slack
+
+import (
+ "context"
+ "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) {
+ 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.Printf(format, v...)
+ }
+}
+
+func (api *Client) Debugln(v ...interface{}) {
+ if api.debug {
+ logger.Println(v...)
+ }
+}