Module slack_bolt.oauth.callback_options

Expand source code
import logging
from logging import Logger
from typing import Optional, Callable

from slack_sdk.oauth import RedirectUriPageRenderer, OAuthStateUtils
from slack_sdk.oauth.installation_store import Installation

from slack_bolt.oauth.internals import CallbackResponseBuilder
from slack_bolt.request import BoltRequest
from slack_bolt.response import BoltResponse


class SuccessArgs:
    def __init__(  # type: ignore
        self,
        *,
        request: BoltRequest,
        installation: Installation,
        settings: "OAuthSettings",
        default: "CallbackOptions",
    ):
        """The arguments for a success function.

        Args:
            request: The request.
            installation: The installation data.
            settings: The settings for Slack OAuth flow.
            default: The default `CallbackOptions`
        """
        self.request = request
        self.installation = installation
        self.settings = settings
        self.default = default


class FailureArgs:
    def __init__(  # type: ignore
        self,
        *,
        request: BoltRequest,
        reason: str,
        error: Optional[Exception] = None,
        suggested_status_code: int,
        settings: "OAuthSettings",
        default: "CallbackOptions",
    ):
        """The arguments for a failure function.

        Args:
            request: The request.
            reason: The response.
            error: An exception if exists.
            suggested_status_code: The recommended HTTP status code for the failure.
            settings: The settings for Slack OAuth flow.
            default: The default `CallbackOptions`.
        """
        self.request = request
        self.reason = reason
        self.error = error
        self.suggested_status_code = suggested_status_code
        self.settings = settings
        self.default = default


class CallbackOptions:
    success: Callable[[SuccessArgs], BoltResponse]
    failure: Callable[[FailureArgs], BoltResponse]

    def __init__(
        self,
        success: Callable[[SuccessArgs], BoltResponse],
        failure: Callable[[FailureArgs], BoltResponse],
    ):
        """The configurations for OAuth flow.

        Args:
            success: A handler for successful installation.
            failure: A handler for any types of installation failures.
        """
        self.success = success
        self.failure = failure


class DefaultCallbackOptions(CallbackOptions):
    success: Callable[[SuccessArgs], BoltResponse]
    failure: Callable[[FailureArgs], BoltResponse]

    def __init__(
        self,
        *,
        logger: Logger,
        state_utils: OAuthStateUtils,
        redirect_uri_page_renderer: RedirectUriPageRenderer,
    ):
        self._response_builder = CallbackResponseBuilder(
            logger=logger or logging.getLogger(__name__),
            state_utils=state_utils,
            redirect_uri_page_renderer=redirect_uri_page_renderer,
        )
        self.success = self._success_handler
        self.failure = self._failure_handler

    # --------------------------
    # Internal methods
    # --------------------------

    def _success_handler(self, args: SuccessArgs) -> BoltResponse:
        return self._response_builder._build_callback_success_response(
            request=args.request,
            installation=args.installation,
        )

    def _failure_handler(self, args: FailureArgs) -> BoltResponse:
        return self._response_builder._build_callback_failure_response(
            request=args.request,
            reason=args.reason,
            status=args.suggested_status_code,
        )

Classes

class CallbackOptions (success: Callable[[SuccessArgs], BoltResponse], failure: Callable[[FailureArgs], BoltResponse])

The configurations for OAuth flow.

Args

success
A handler for successful installation.
failure
A handler for any types of installation failures.
Expand source code
class CallbackOptions:
    success: Callable[[SuccessArgs], BoltResponse]
    failure: Callable[[FailureArgs], BoltResponse]

    def __init__(
        self,
        success: Callable[[SuccessArgs], BoltResponse],
        failure: Callable[[FailureArgs], BoltResponse],
    ):
        """The configurations for OAuth flow.

        Args:
            success: A handler for successful installation.
            failure: A handler for any types of installation failures.
        """
        self.success = success
        self.failure = failure

Subclasses

Class variables

var failure : Callable[[FailureArgs], BoltResponse]
var success : Callable[[SuccessArgs], BoltResponse]
class DefaultCallbackOptions (*, logger: logging.Logger, state_utils: slack_sdk.oauth.state_utils.OAuthStateUtils, redirect_uri_page_renderer: slack_sdk.oauth.redirect_uri_page_renderer.RedirectUriPageRenderer)

The configurations for OAuth flow.

Args

success
A handler for successful installation.
failure
A handler for any types of installation failures.
Expand source code
class DefaultCallbackOptions(CallbackOptions):
    success: Callable[[SuccessArgs], BoltResponse]
    failure: Callable[[FailureArgs], BoltResponse]

    def __init__(
        self,
        *,
        logger: Logger,
        state_utils: OAuthStateUtils,
        redirect_uri_page_renderer: RedirectUriPageRenderer,
    ):
        self._response_builder = CallbackResponseBuilder(
            logger=logger or logging.getLogger(__name__),
            state_utils=state_utils,
            redirect_uri_page_renderer=redirect_uri_page_renderer,
        )
        self.success = self._success_handler
        self.failure = self._failure_handler

    # --------------------------
    # Internal methods
    # --------------------------

    def _success_handler(self, args: SuccessArgs) -> BoltResponse:
        return self._response_builder._build_callback_success_response(
            request=args.request,
            installation=args.installation,
        )

    def _failure_handler(self, args: FailureArgs) -> BoltResponse:
        return self._response_builder._build_callback_failure_response(
            request=args.request,
            reason=args.reason,
            status=args.suggested_status_code,
        )

Ancestors

Class variables

var failure : Callable[[FailureArgs], BoltResponse]
var success : Callable[[SuccessArgs], BoltResponse]
class FailureArgs (*, request: BoltRequest, reason: str, error: Optional[Exception] = None, suggested_status_code: int, settings: OAuthSettings, default: CallbackOptions)

The arguments for a failure function.

Args

request
The request.
reason
The response.
error
An exception if exists.
suggested_status_code
The recommended HTTP status code for the failure.
settings
The settings for Slack OAuth flow.
default
The default CallbackOptions.
Expand source code
class FailureArgs:
    def __init__(  # type: ignore
        self,
        *,
        request: BoltRequest,
        reason: str,
        error: Optional[Exception] = None,
        suggested_status_code: int,
        settings: "OAuthSettings",
        default: "CallbackOptions",
    ):
        """The arguments for a failure function.

        Args:
            request: The request.
            reason: The response.
            error: An exception if exists.
            suggested_status_code: The recommended HTTP status code for the failure.
            settings: The settings for Slack OAuth flow.
            default: The default `CallbackOptions`.
        """
        self.request = request
        self.reason = reason
        self.error = error
        self.suggested_status_code = suggested_status_code
        self.settings = settings
        self.default = default
class SuccessArgs (*, request: BoltRequest, installation: slack_sdk.oauth.installation_store.models.installation.Installation, settings: OAuthSettings, default: CallbackOptions)

The arguments for a success function.

Args

request
The request.
installation
The installation data.
settings
The settings for Slack OAuth flow.
default
The default CallbackOptions
Expand source code
class SuccessArgs:
    def __init__(  # type: ignore
        self,
        *,
        request: BoltRequest,
        installation: Installation,
        settings: "OAuthSettings",
        default: "CallbackOptions",
    ):
        """The arguments for a success function.

        Args:
            request: The request.
            installation: The installation data.
            settings: The settings for Slack OAuth flow.
            default: The default `CallbackOptions`
        """
        self.request = request
        self.installation = installation
        self.settings = settings
        self.default = default