
    +Jf(                        d dl Z d dlmZ d dlZd dlmZmZ d dlmZ d dlZd dl	Z	ddl
mZ ddlmZ ddlmZ d d	lmZmZmZ e j        d
k    Zd ZddZd ZddZddZddZd Zd ZddZd Zd Z d Z!d Z"d Z#d Z$d Z%dS )    N)datetime)	b64encode	b64decode)deepcopy   )Channel)Response)WebSocketEvent)urlparseparse_qs	urlencode)   c                    t          |           }|j                            dd          }t          |          }d }d }d }d }d|v r|d         d         }|d= d|v r|d         d         }|d= |,|                    d          rt          |dd                    }d|v r|d         d         }|d= d	|v r|d	         d         }|d	= |,|                    d          rt          |dd                    }t          |d
          }|j        }	|	                    d          r
|	d d         }	|j	        dz   |j
        z   |	z   }
|r|
d|z   z  }
d|
i}|r||d<   |r||d<   |r||d<   |r||d<   |S )N+z%2Bissr   keyzbase64:   z
verify-issz
verify-keyT/z://?control_uricontrol_iss
verify_iss
verify_key)r   queryreplacer   
startswithr   r   pathendswithschemenetloc)uriparsedr   paramsr   r   r   r   qsr   r   outs               Z/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/gripcontrol/gripcontrol.pyparse_grip_urir(   %   s   
3--			c5	)	)
5//	VOOua#Um	VOOua#UmOy11O#abb'#Fl#A&*\Fl#A&*\z44Y??ABB((*MM# 	crc$}u$v}4t; r+{# #m #e* ! #l ! #l    c                 :   t          |           r|                     d          } 	 t          j        | |g d          }n# t          $ r Y dS w xY w|                    d          }|sdS t                      |k    rdS ||                    d          |k    rdS dS )Nutf-8)HS256RS256ES256)
algorithmsFexpr   T)_is_unicode_instanceencodejwtdecode	Exceptionget_timestamp_utcnow)tokenr   r   claimr0   s        r'   validate_sigr:   S   s      
,,w

%
*UC,G,G,G
H
H
H%%   	 yy 	3	O		%((C//	s   A   
AAc                     t          |           } t                      }| D ]D}|j        }|j        |d|j        z  z  }|j        D ]
}|d|z  z  }|                    |           Ed                    |          S )Nz; prev-id=%sz; filter=%sz, )_parse_channelslistnameprev_idfiltersappendjoin)channelspartschannelsfs        r'   create_grip_channel_headerrH   n   s    H%%	  Wl!_ ((1?  a11,,q////		%r)   c                     t                      }| |d<   t          |          }t          |          }||d<   |r||d<   t          |          }t                      }||d<   |r||d<   t	          j        |          S )NmoderC   timeoutholdresponse)dictr<   _get_hold_channels_get_hold_responsejsondumps)rJ   rC   rM   rK   rL   	ichannels	iresponseinstructs           r'   create_holdrV      s    fH%%))j $y/))FF& #"(:
8r)   c                 &    t          d| ||          S )NrM   rV   )rC   rM   rK   s      r'   create_hold_responserY      s    J(G<<<r)   c                 $    t          d| |          S )NstreamrX   )rC   rM   s     r'   create_hold_streamr\      s    Hh111r)   c                    t           r$t          | t                    st          d          t	                      }d}|t          |           k     rt           r|                     d|          }|dk    rt          d          | ||         }|dz   }|                    d          }|dk    ra|d |                             d          }t          d	||d
z   d          z   d          }| |||z            }||dz   z  }t          ||          }n|                    d          }t          |          }n|                     d|          }|dk    rt          d          | ||         }|dz   }|                    d          }|dk    rN|d |         }t          d||d
z   d          z   d          }| |||z            }||dz   z  }t          ||          }nt          |          }|
                    |           |t          |           k     |S )Nzbody must be bytesr      
r   z
bad format       r+   s   0xr      z
 0x)
is_python3
isinstancebytes
ValueErrorr=   lenfindr4   intr
   rA   )	bodyr&   startattypelineetypeclencontentes	            r'   decode_websocket_eventsrs      s,    *	D%	 	  *	(	)	))vv	
s4yy  !		'5!!2Bhh
\
"
""58n865d2BhhSbSM  ))EuxQ(("--D5%&G	TAXEug&&AAOOG$$EuAA		&%  2Bhh
\
"
""58n865c2BhhSbSMEthrAvww'',,D5%&G	TAXEug&&AAx  A**Q---G s4yyJ 	r)   c                    t           rd}| D ]}t          |j        t                    r|j                            d          }n|j        }|j        }|-t          |t                    r|                    d          }n|}||z  }|*dt          |          z  }||                    d          z  }|dz  }|
||z  }|dz  }|S d}| D ]>}|j        (|d|j        t          |j                  |j        fz  z  }1|d|j        z  z  }?|S )Nr)   r+   z %xr^    z%s %x
%s
z%s
)rd   re   typestrr2   rq   rh   )eventsr&   rr   ro   rq   size_strs         r'   encode_websocket_eventsrz      s:    #  a FMM'""EEFEY7'3 ~~g&&WWW%<3s7||#H8??7###C'>37NC7NC	*
#  aiAI	BBBCC8afCC	*r)   c                 t    |rt          |          }nt                      }| |d<   t          j        |          S )Nrv   )r   rN   rQ   rR   )rv   argsr&   s      r'   websocket_control_messager}      s7     ###V
3r)   c                     t          | t                    r| g} nt          |           rt          |           g} t          |           dk    sJ | S )Nr   )re   r   _is_basestring_instancerh   )rC   s    r'   r<   r<      sY    x!! !Z((h'' !h (Hr)   c                     t                      }| D ]^}t          |          rt          |          }t                      }|j        |d<   |j        r
|j        |d<   |                    |           _|S )Nr>   zprev-id)r=   r   r   rN   r>   r?   rA   )rC   rS   cichannels       r'   rO   rO     s}    VV
  QQ qzz1VV(V(6Y #8I8r)   c                    d }| t          |           st          | t                    rt          |           } t	                      }| j        
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        rDt          | j                  \  }}|r||d<   n%t          |                              d          |d<   |S )N)rk   codereasonheadersrk   r+   zbody-bin)r   re   rf   r	   rN   r   r   r   rk   _bin_or_textr   r4   )rM   rT   is_textvals       r'   rP   rP     s    X&& &*Xu*E*E &H%%%8ff)]}9V_ )!9X +"*9Y] ;x}--<7C ;If%cNN11'::Ijr)   c                     	 t          | t                    rdS n(# t          $ r t          | t                    rY dS Y nw xY wdS NTF)re   unicode	NameErrorrw   instances    r'   r1   r1   -  sh    '"" 
$   # 
$$  	    ??c                     	 t          | t                    rdS n(# t          $ r t          | t                    rY dS Y nw xY wdS r   )re   
basestringr   rw   r   s    r'   r   r   8  sh    *%% 
$   # 
$$  	r   c                     t          |           rd| fS 	 d|                     d          fS # t          $ r d| fcY S w xY w)NTr+   F)r1   r4   UnicodeDecodeError)rF   s    r'   r   r   C  sc     

!!	""   
s   , ==c                  p    t          j        t          j                                                              S N)calendartimegmr   utcnowutctimetuple r)   r'   r7   r7   L  s&    ))6688999r)   r   )NN)&sysr   r   base64r   r   copyr   rQ   r3   rE   r   rM   r	   websocketeventr
   six.moves.urllib_parser   r   r   version_inford   r(   r:   rH   rV   rY   r\   rs   rz   r}   r<   rO   rP   r1   r   r   r7   r   r)   r'   <module>r      s    


        ' ' ' ' ' ' ' '        



             * * * * * * @ @ @ @ @ @ @ @ @ @ %
) ) )\   6
 
 
"   &= = = =2 2 2 2, , ,b  H         ,      : : : : :r)   