diff --git a/slack_sdk/signature/__init__.py b/slack_sdk/signature/__init__.py index aa46e5348..ecdc67539 100644 --- a/slack_sdk/signature/__init__.py +++ b/slack_sdk/signature/__init__.py @@ -3,7 +3,13 @@ import hashlib import hmac from time import time -from typing import Dict, Optional, Union +from typing import Dict, Optional, Union, TYPE_CHECKING + +# Fallback to Dict for Python 3.7/3.8 compatibility (safe to remove once these versions are no longer supported) +if TYPE_CHECKING: + from collections.abc import Mapping +else: + Mapping = Dict class Clock: @@ -26,7 +32,7 @@ def __init__(self, signing_secret: str, clock: Clock = Clock()): def is_valid_request( self, body: Union[str, bytes], - headers: Dict[str, str], + headers: Mapping[str, str], ) -> bool: """Verifies if the given signature is valid""" if headers is None: @@ -34,15 +40,15 @@ def is_valid_request( normalized_headers = {k.lower(): v for k, v in headers.items()} return self.is_valid( body=body, - timestamp=normalized_headers.get("x-slack-request-timestamp", None), # type: ignore[arg-type] - signature=normalized_headers.get("x-slack-signature", None), # type: ignore[arg-type] + timestamp=normalized_headers.get("x-slack-request-timestamp", None), + signature=normalized_headers.get("x-slack-signature", None), ) def is_valid( self, body: Union[str, bytes], - timestamp: str, - signature: str, + timestamp: Optional[str], + signature: Optional[str], ) -> bool: """Verifies if the given signature is valid""" if timestamp is None or signature is None: