Module slack_bolt.listener.listener_completion_handler

Expand source code
import inspect
from abc import ABCMeta, abstractmethod
from logging import Logger
from typing import Callable, Dict, Any, Optional

from slack_bolt.listener.internals import (
    _build_all_available_args,
    _convert_all_available_args_to_kwargs,
)
from slack_bolt.request.request import BoltRequest
from slack_bolt.response.response import BoltResponse


class ListenerCompletionHandler(metaclass=ABCMeta):
    @abstractmethod
    def handle(
        self,
        request: BoltRequest,
        response: Optional[BoltResponse],
    ) -> None:
        """Handles an unhandled exception.

        Args:
            request: The request.
            response: The response.
        """
        raise NotImplementedError()


class CustomListenerCompletionHandler(ListenerCompletionHandler):
    def __init__(self, logger: Logger, func: Callable[..., None]):
        self.func = func
        self.logger = logger
        self.arg_names = inspect.getfullargspec(func).args

    def handle(
        self,
        request: BoltRequest,
        response: Optional[BoltResponse],
    ):
        all_available_args = _build_all_available_args(
            logger=self.logger,
            request=request,
            response=response,
        )
        kwargs: Dict[str, Any] = _convert_all_available_args_to_kwargs(
            all_available_args=all_available_args,
            arg_names=self.arg_names,
            logger=self.logger,
        )
        self.func(**kwargs)


class DefaultListenerCompletionHandler(ListenerCompletionHandler):
    def __init__(self, logger: Logger):
        self.logger = logger

    def handle(
        self,
        request: BoltRequest,
        response: Optional[BoltResponse],
    ):
        pass

Classes

class CustomListenerCompletionHandler (logger: logging.Logger, func: Callable[..., NoneType])
Expand source code
class CustomListenerCompletionHandler(ListenerCompletionHandler):
    def __init__(self, logger: Logger, func: Callable[..., None]):
        self.func = func
        self.logger = logger
        self.arg_names = inspect.getfullargspec(func).args

    def handle(
        self,
        request: BoltRequest,
        response: Optional[BoltResponse],
    ):
        all_available_args = _build_all_available_args(
            logger=self.logger,
            request=request,
            response=response,
        )
        kwargs: Dict[str, Any] = _convert_all_available_args_to_kwargs(
            all_available_args=all_available_args,
            arg_names=self.arg_names,
            logger=self.logger,
        )
        self.func(**kwargs)

Ancestors

Inherited members

class DefaultListenerCompletionHandler (logger: logging.Logger)
Expand source code
class DefaultListenerCompletionHandler(ListenerCompletionHandler):
    def __init__(self, logger: Logger):
        self.logger = logger

    def handle(
        self,
        request: BoltRequest,
        response: Optional[BoltResponse],
    ):
        pass

Ancestors

Inherited members

class ListenerCompletionHandler
Expand source code
class ListenerCompletionHandler(metaclass=ABCMeta):
    @abstractmethod
    def handle(
        self,
        request: BoltRequest,
        response: Optional[BoltResponse],
    ) -> None:
        """Handles an unhandled exception.

        Args:
            request: The request.
            response: The response.
        """
        raise NotImplementedError()

Subclasses

Methods

def handle(self, request: BoltRequest, response: Optional[BoltResponse]) ‑> NoneType

Handles an unhandled exception.

Args

request
The request.
response
The response.
Expand source code
@abstractmethod
def handle(
    self,
    request: BoltRequest,
    response: Optional[BoltResponse],
) -> None:
    """Handles an unhandled exception.

    Args:
        request: The request.
        response: The response.
    """
    raise NotImplementedError()