Skip to main content

SlackPlugin

Struct SlackPlugin 

Source
pub struct SlackPlugin { /* private fields */ }
Expand description

Slack plugin.

ⓘ
autumn_web::app()
    .plugin(
        SlackPlugin::new()
            .on_event("app_mention", on_mention)
            .command("/deploy", deploy),
    )
    .run()
    .await;

Implementations§

Source§

impl SlackPlugin

Source

pub fn new() -> Self

Makes the plugin. It reads [slack] at startup.

Source

pub fn with_config(config: SlackConfig) -> Self

Makes the plugin with this config. It reads no files.

Source

pub fn base_path(self, path: &str) -> Self

Sets the base path of the routes. Default: /slack.

autumn mounts routes before it loads config. So this is a builder setting, not a config key.

Source

pub const fn readiness(self, on: bool) -> Self

Puts the health indicator in /ready too. Default: only in /actuator/health.

Source

pub fn with_signing_secret(self, secret: impl Into<String>) -> Self

Uses this signing secret, not the env var.

Source

pub fn with_previous_signing_secret(self, secret: impl Into<String>) -> Self

Also accepts this old signing secret. Use during rotation.

Source

pub fn with_bot_token(self, token: impl Into<String>) -> Self

Uses this bot token, not the env var.

Source

pub fn with_transport(self, transport: impl HttpTransport) -> Self

Uses this transport. Default: crate::transport::ReqwestTransport.

Source

pub fn with_transport_arc(self, transport: Arc<dyn HttpTransport>) -> Self

Uses this shared transport.

Source

pub fn with_clock(self, clock: Arc<dyn ClockSource>) -> Self

Uses this clock for the timestamp check. Default: the system clock.

Source

pub fn with_replay_store(self, store: Arc<dyn WebhookReplayStore>) -> Self

Uses this store to drop event retries. Default: in memory, per process. Use a Redis store for many replicas.

Source

pub fn on_event<F, Fut>(self, event_type: &str, handler: F) -> Self
where F: Fn(SlackContext, EventCallback) -> Fut + Send + Sync + 'static, Fut: Future<Output = HandlerResult<()>> + Send + 'static,

Runs handler for Events API events of event_type, after the ack.

Source

pub fn command<F, Fut>(self, name: &str, handler: F) -> Self
where F: Fn(SlackContext, SlashCommand) -> Fut + Send + Sync + 'static, Fut: Future<Output = HandlerResult<CommandResponse>> + Send + 'static,

Runs handler for the slash command name, for example /deploy.

Source

pub fn action<F, Fut>(self, action_id: &str, handler: F) -> Self
where F: Fn(SlackContext, BlockAction) -> Fut + Send + Sync + 'static, Fut: Future<Output = HandlerResult<Option<Message>>> + Send + 'static,

Runs handler for a block action with this action_id, after the ack. A returned message goes to the response_url.

Source

pub fn view_submission<F, Fut>(self, callback_id: &str, handler: F) -> Self
where F: Fn(SlackContext, ViewPayload) -> Fut + Send + Sync + 'static, Fut: Future<Output = HandlerResult<ViewResponse>> + Send + 'static,

Runs handler for a modal submit with this callback_id.

Source

pub fn view_closed<F, Fut>(self, callback_id: &str, handler: F) -> Self
where F: Fn(SlackContext, ViewPayload) -> Fut + Send + Sync + 'static, Fut: Future<Output = HandlerResult<()>> + Send + 'static,

Runs handler when a user closes a modal with this callback_id. The modal must set notify_on_close.

Source

pub fn shortcut<F, Fut>(self, callback_id: &str, handler: F) -> Self
where F: Fn(SlackContext, Shortcut) -> Fut + Send + Sync + 'static, Fut: Future<Output = HandlerResult<()>> + Send + 'static,

Runs handler for a global or message shortcut with this callback_id, after the ack.

Source

pub fn metrics(&self) -> Arc<SlackMetrics> ⓘ

The metrics. They are shared with the started runtime.

Source

pub fn start(self, state: &AppState) -> Result<SlackRuntime, SlackError>

Starts the plugin outside an app build. Use it in tests, with SlackRuntime::router. Plugin::build does the same at startup.

§Errors

Returns a config error.

Source

pub fn start_with_role( self, state: &AppState, role: impl Into<Role>, ) -> Result<SlackRuntime, SlackError>

Starts the plugin as if the process has role. A role that serves no HTTP (worker, or a preset without HTTP) needs no signing secret and no CSRF exemption. A ProcessRole converts into a Role.

§Errors

Same as Self::start.

Trait Implementations§

Source§

impl Debug for SlackPlugin

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SlackPlugin

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Plugin for SlackPlugin

Source§

fn name(&self) -> Cow<'static, str>

Stable identifier used for duplicate-registration detection. Read more
Source§

fn contract(&self) -> Option<PluginContract>

Declare which autumn-web versions this plugin supports, and any experimental surface it knowingly depends on. Read more
Source§

fn build(self, app: AppBuilder) -> AppBuilder

Apply this plugin’s configuration to the builder. Read more
Source§

fn route_group(&self) -> Cow<'static, str>

The route group of the routes this plugin adds (#3544). Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P> Plugins for P
where P: Plugin,

Source§

fn apply(self, app: AppBuilder) -> AppBuilder

Apply every plugin in this bundle to the builder, in declaration order.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Scoped for T
where T: Send + Sync + 'static,

Source§

fn scope(ctx: &PolicyContext) -> ScopeQuery<'_, Self>

Open a deferred ScopeQuery for this type. Resolves the registered scope at .load() time, not here.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more