Code Monkey home page Code Monkey logo

slack's Introduction

Slack

This library implements the Slack API Web and Real Time Messaging parts. A simple example utilizing most of the functionality can be seen under examples/scli which implements a full featured CLI client for Slack - either interactive or for batch usage.

Implemented Methods

Method Description Support
api.test Checks API calling code false
auth.test Checks authentication & identity true
channels.archive Archives a channel true
channels.create Creates a channel true
channels.history Fetches history of messages and events from a channel true
channels.info Gets information about a channel true
channels.invite Invites a user to a channel true
channels.join Joins a channel, creating it if needed true
channels.kick Removes a user from a channel true
channels.leave Leaves a channel true
channels.list Lists all channels in a Slack team true
channels.mark Sets the read cursor in a channel true
channels.rename Renames a channel true
channels.setPurpose Sets the purpose for a channel true
channels.setTopic Sets the topic for a channel true
channels.unarchive Unarchives a channel true
chat.delete Deletes a message true
chat.postMessage Sends a message to a channel true
chat.update Updates a message false
emoji.list Lists custom emoji for a team true
files.delete Deletes a file true
files.info Gets information about a team file true
files.list Lists & filters team files true
files.upload Uploads or creates a file true
groups.archive Archives a private group true
groups.close Closes a private group true
groups.create Creates a private group true
groups.createChild Clones and archives a private group true
groups.history Fetches history of messages and events from a private group true
groups.info Gets information about a private group true
groups.invite Invites a user to a private group true
groups.kick Removes a user from a private group true
groups.leave Leaves a private group true
groups.list Lists private groups that the calling user has access to true
groups.mark Sets the read cursor in a private group true
groups.open Opens a private group true
groups.rename Renames a private group true
groups.setPurpose Sets the purpose for a private group true
groups.setTopic Sets the topic for a private group true
groups.unarchive Unarchives a private group true
im.close Close a direct message channel true
im.history Fetches history of messages and events from direct message channel true
im.list Lists direct message channels for the calling user true
im.mark Sets the read cursor in a direct message channel true
im.open Opens a direct message channel true
rtm.start Starts a Real Time Messaging session true
search.all Searches for messages and files matching a query false
search.files Searches for files matching a query false
search.messages Searches for messages matching a query false
stars.list Lists stars for a user false
team.accessLogs Gets the access logs for the current team false
team.info Gets information about the current team true
users.getPresence Gets user presence information false
users.info Gets information about a user true
users.list Lists all users in a Slack team true
users.setActive Marks a user as active false
users.setPresence Manually sets user presence false

Missing Features

  • All of the above with a false in the support column.
  • Testing

Install

If you have a go workplace setup and working you can simply do:

go get -u -t -v github.com/demisto/slack

Usage

There are 2 ways to initiate the library, both using the various configuration functions slack.Set*:

  • Either using a test token retrieved from Slack and then setting the token
s, err = slack.New(slack.SetToken("test token retrieved from Slack"))
  • Using OAuth - see a simple example using uuid for random state. For this to work, you need to register your application with Slack.
// Start the OAuth process

// First, generate a random state
uuid, err := random.New()
if err != nil {
  panic(err)
}
conf := &oauth2.Config{
  ClientID:     "Your client ID",
  ClientSecret: "Your client secret",
  Scopes:       []string{"client"}, // the widest scope - can be others depending on requirement
  Endpoint: oauth2.Endpoint{
    AuthURL:  "https://slack.com/oauth/authorize",
    TokenURL: "https://slack.com/api/oauth.access",
  },
}
// Store state somewhere you can use later with timestamp
// ...
url := conf.AuthCodeURL(uuid.String())
// Redirect user to the OAuth Slack page
http.Redirect(w, r, url, http.StatusFound)
// Now, handle the redirected URL after the successful authentication

state := r.FormValue("state")
code := r.FormValue("code")
errStr := r.FormValue("error")
if errStr != "" {
  WriteError(w, &Error{"oauth_err", 401, "Slack OAuth Error", errStr})
  return
}
if state == "" || code == "" {
  WriteError(w, ErrBadContentRequest)
  return
}
// Retrieve the state you saved in the first step and make sure it is not too old
// ...
token, err := slack.OAuthAccess("Your client ID", "Your client secret", code, "")
if err != nil {
  WriteError(w, &Error{"oauth_err", 401, "Slack OAuth Error", err.Error()})
  return
}
// Done - you have the token - you can save it for later use
s, err := slack.New(slack.SetToken(token.AccessToken))
if err != nil {
  panic(err)
}
// Get our own user id
test, err := s.AuthTest()
if err != nil {
  panic(err)
}

Authors

The library was written by slavikm as a side project to play with Slack API for demisto.

slack's People

Contributors

slavikm avatar shaniacht1 avatar dorsha avatar rishibhargava avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.