
    'j&	                         d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ  G d d	e          Zd
S )    )Logger)CallableDictAnyOptional)SignatureVerifier)get_bolt_logger)
Middleware)BoltRequestBoltResponsec                       e Zd Zddedee         fdZdedede	g ef         defd	Z
ed
edeeef         defd            Zedefd            ZddZdS )RequestVerificationNsigning_secretbase_loggerc                 f    t          |          | _        t          t          |          | _        dS )aY  Verifies an incoming request by checking the validity of
        `x-slack-signature`, `x-slack-request-timestamp`, and its body data.

        Refer to https://docs.slack.dev/authentication/verifying-requests-from-slack/ for details.

        Args:
            signing_secret: The signing secret
            base_logger: The base logger
        )r   )r   N)r   verifierr	   r   logger)selfr   r   s      /usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/slack_bolt/middleware/request_verification/request_verification.py__init__zRequestVerification.__init__   s/     *HHH%&9{SSS    reqrespnextreturnc                   |                      |j        |j                  r
 |            S |j        }|j                            ddg          d         }|j                            ddg          d         }| j                            |||          r
 |            S |                     |||           | 	                                S )Nzx-slack-request-timestamp0r   zx-slack-signature )
	_can_skipmodebodyraw_bodyheadersgetr   is_valid_debug_log_error_build_error_response)r   r   r   r   r"   	timestamp	signatures          r   processzRequestVerification.process   s     >>#(CH-- 	466M|KOO$?#GGJ	KOO$7">>qA	=!!$	9== 	0466M!!)Y===--///r   r!   r"   c                 H    | dk    p|d uo|                     d          dk    S )Nsocket_mode	ssl_check1)r%   )r!   r"   s     r   r    zRequestVerification._can_skip2   s.    }$[T)9)Zdhh{>S>SWZ>Z[r   c                  (    t          dddi          S )Ni  errorzinvalid request)statusr"   r    r   r   r(   z)RequestVerification._build_error_response6   s    3g7H-IJJJJr   c           	      N    | j                             d| d| d| d           d S )Nz/Invalid request signature detected (signature: z, timestamp: z, body: ))r   info)r   r*   r)   r"   s       r   r'   z$RequestVerification._debug_log_error:   sF    sssYbsslpsss	
 	
 	
 	
 	
r   )N)r   N)__name__
__module____qualname__strr   r   r   r   r   r   r+   staticmethodr   r   boolr    r(   r'   r3   r   r   r   r      s       T Ts T&9I T T T T0 0 	0 r<'(0 
0 0 0 00 \ \4S> \d \ \ \ \\ K< K K K \K
 
 
 
 
 
r   r   N)loggingr   typingr   r   r   r   slack_sdk.signaturer   slack_bolt.loggerr	    slack_bolt.middleware.middlewarer
   slack_bolt.requestr   slack_bolt.responser   r   r3   r   r   <module>rD      s          0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 - - - - - - 7 7 7 7 7 7 * * * * * * , , , , , ,1
 1
 1
 1
 1
* 1
 1
 1
 1
 1
r   