Crate slack_chat_api

Crate slack_chat_api 

Source
Expand description

A fully generated, opinionated API client library for Slack.

docs.rs

§API Details

One way to interact with the Slack platform is its HTTP RPC-based Web API, a collection of methods requiring OAuth 2.0-based user, bot, or workspace tokens blessed with related OAuth scopes.

§Contact

nameurl
Slack developer relationshttps://api.slack.com/support

§Client Details

This client is generated from the Slack OpenAPI specs based on API spec version 1.7.0. This way it will remain up to date as features are added. The documentation for the crate is generated along with the code to make this library easy to use.

To install the library, add the following to your Cargo.toml file.

[dependencies]
slack-chat-api = "0.7.0"

§Basic example

Typical use will require intializing a Client. This requires a user agent string and set of credentials.

use slack_chat_api::Client;

let slack = Client::new(
    String::from("client-id"),
    String::from("client-secret"),
    String::from("redirect-uri"),
    String::from("token"),
    String::from("refresh-token")
);

Alternatively, the library can search for most of the variables required for the client in the environment:

  • SLACK_CLIENT_ID
  • SLACK_CLIENT_SECRET
  • SLACK_REDIRECT_URI

And then you can create a client from the environment.

use slack_chat_api::Client;

let slack = Client::new_from_env(
    String::from("token"),
    String::from("refresh-token")
);

It is okay to pass empty values for token and refresh_token. In the initial state of the client, you will not know these values.

To start off a fresh client and get a token and refresh_token, use the following.

use slack_chat_api::Client;

async fn do_call() {
    let mut slack = Client::new_from_env("", "");

    // Get the URL to request consent from the user.
    // You can optionally pass in scopes. If none are provided, then the
    // resulting URL will not have any scopes.
    let user_consent_url = slack.user_consent_url(&["some-scope".to_string()]);

    // In your redirect URL capture the code sent and our state.
    // Send it along to the request for the token.
    let code = "thing-from-redirect-url";
    let state = "state-from-redirect-url";
    let mut access_token = slack.get_access_token(code, state).await.unwrap();

    // You can additionally refresh the access token with the following.
    // You must have a refresh token to be able to call this function.
    access_token = slack.refresh_access_token().await.unwrap();
}

Modules§

admin_apps
admin_apps_approved
admin_apps_requests
admin_apps_restricted
admin_conversations
admin_conversations_ekm
admin_conversations_restrict_access
admin_emoji
admin_invite_requests
admin_invite_requests_approved
admin_invite_requests_denied
admin_teams
admin_teams_admins
admin_teams_owners
admin_teams_settings
admin_usergroups
admin_users
admin_users_session
api
apps
apps_event_authorizations
apps_permissions
apps_permissions_resources
apps_permissions_scopes
apps_permissions_users
auth
bots
calls
calls_participants
chat
chat_scheduled_messages
conversations
dialog
dnd
emoji
files
files_comments
files_remote
migration
oauth
oauth_v_2
pins
reactions
reminders
rtm
search
stars
team
team_profile
types
The data types sent to and returned from the API client.
usergroups
usergroups_users
users
users_profile
views
workflows

Structs§

AccessToken
Client
Entrypoint for interacting with the API client.
HeaderMap
A set of HTTP headers
Response
RootDefaultServer
StatusCode
An HTTP status code (status-code in RFC 7230 et al.).

Enums§

ClientError
Errors returned by the client

Constants§

FALLBACK_HOST