
    "hjC                     b   d dl 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 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 d dlmZ d dlmZ d dlmZ d dlmZ 	 dZdZej:                  ad Zd Z  ee jB                         G d d             Z" G d de"      Z# G d de"      Z$ G d de"      Z%y)    N)iterkeys)	iteritems)add_metaclass)protocol_type)method_type)format_type)rpc_signature_composer)roa_signature_composer)md5_sum)	sha_hmac1)
exceptions)
error_code)ensure_string)CaseInsensitiveDictRPCROAc                     | t         j                  k(  s| t         j                  k(  r| ay t	        j
                  t        j                  d      )Nz4Invalid 'protocol_type', should be 'http' or 'https')r   HTTPHTTPS_default_protocol_typer   ClientExceptionr   SDK_INVALID_PARAMS)user_protocol_types    S/root/.hermes/SkillClaw/.venv/lib/python3.12/site-packages/aliyunsdkcore/request.pyset_default_protocol_typer   0   sE     ]///3EI\I\3\!3(())B
 	
    c                      t         S N)r    r   r   get_default_protocol_typer    <   s    !!r   c                   |   e Zd ZdZ	 	 	 	 	 	 	 d.dZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&e'jP                  d&        Z)e'jP                  d'        Z*e'jP                  d(        Z+d) Z,d* Z-d+ Z.d, Z/d- Z0y)/
AcsRequestzV
    Acs request base class. This class wraps up common parameters for a request.
    Nc	                    || _         || _        || _        || _        | j                  t        | _        || _        i | _        || _        i | _        || j                  d|       || j                  d|       i | _
        d| _        d| _        d| _        || _        || _        | j                  dd       d| _        i | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        y)z

        :param product:
        :param version:
        :param action_name:
        :param params:
        :param resource_owner_account:
        :param protocol_type:
        :param accept_format:
        :return:
        Nx-acs-actionx-acs-versionx-sdk-invoke-typenormal public)_version_product_action_name_protocol_typer   _accept_format_params_method_header
add_header_body_params_uri_pattern_uri_params_content_location_service_code_location_endpoint_typeendpoint_extra_user_agentstring_to_sign_request_connect_timeout_request_read_timeoutrequest_networkproduct_suffixendpoint_mapendpoint_regional)	selfproductversionaction_namelocation_service_codelocation_endpoint_typeaccept_formatr   methods	            r   __init__zAcsRequest.__init__F   s    $  '+&"8D+"OONK8OOOW5 &;#'=$+X6!# (,%%)"'  !%r   c                 "    || j                   |<   y r   r/   rB   kvs      r   add_query_paramzAcsRequest.add_query_paramx       Qr   c                 "    || j                   |<   y r   r3   rM   s      r   add_body_paramszAcsRequest.add_body_params{   s     !r   c                     | j                   S r   rS   rB   s    r   get_body_paramszAcsRequest.get_body_params~          r   c                     | j                   S r   r4   rV   s    r   get_uri_patternzAcsRequest.get_uri_pattern   rX   r   c                     | j                   S r   r5   rV   s    r   get_uri_paramszAcsRequest.get_uri_params   s    r   c                     | j                   S r   r+   rV   s    r   get_productzAcsRequest.get_product       }}r   c                     | j                   S r   )r*   rV   s    r   get_versionzAcsRequest.get_version   rb   r   c                     | j                   S r   )r,   rV   s    r   get_action_namezAcsRequest.get_action_name   rX   r   c                     | j                   S r   r.   rV   s    r   get_accept_formatzAcsRequest.get_accept_format       """r   c                     | j                   S r   r-   rV   s    r   get_protocol_typezAcsRequest.get_protocol_type   rj   r   c                     | j                   S r   rL   rV   s    r   get_query_paramszAcsRequest.get_query_params       ||r   c                     | j                   S r   r0   rV   s    r   
get_methodzAcsRequest.get_method   rp   r   c                     || _         y r   rZ   )rB   patterns     r   set_uri_patternzAcsRequest.set_uri_pattern   s
    #r   c                     || _         y r   r]   rB   paramss     r   set_uri_paramszAcsRequest.set_uri_params   s
    !r   c                     || _         y r   rr   )rB   rI   s     r   
set_methodzAcsRequest.set_method   	    r   c                     || _         y r   r`   rB   rC   s     r   set_productzAcsRequest.set_product   	    r   c                 0    || j                   d<   || _        y Nr%   )r1   r*   )rB   rD   s     r   set_versionzAcsRequest.set_version   s    (/_%r   c                 0    || j                   d<   || _        y )Nr$   )r1   r,   )rB   rE   s     r   set_action_namezAcsRequest.set_action_name   s    '2^$'r   c                     || _         y r   rh   )rB   rH   s     r   set_accept_formatzAcsRequest.set_accept_format   
    +r   c                     || _         y r   rl   )rB   r   s     r   set_protocol_typezAcsRequest.set_protocol_type   r   r   c                     || _         y r   rL   rx   s     r   set_query_paramszAcsRequest.set_query_params   r}   r   c                     || _         y r   rS   )rB   body_paramss     r   set_body_paramszAcsRequest.set_body_params   
    'r   c                     || _         y)z=

        :param content: ByteArray
        :return:
        Nr6   )rB   contents     r   set_contentzAcsRequest.set_content   s      r   c                     | j                   S )z%

        :return: ByteArray
        r   rV   s    r   get_contentzAcsRequest.get_content   s    
 }}r   c                     | j                   S )z 

        :return: Dict
        r1   rV   s    r   get_headerszAcsRequest.get_headers   s    
 ||r   c                     || _         y)z8

        :param headers: Dict
        :return:
        Nr   )rB   headerss     r   set_headerszAcsRequest.set_headers   s     r   c                 "    || j                   |<   y r   r   rM   s      r   r2   zAcsRequest.add_header   rQ   r   c                 (    | j                  d|       y )N
User-Agentr2   )rB   agents     r   set_user_agentzAcsRequest.set_user_agent   s    e,r   c                 >    | j                   j                  ||i       y r   )r:   update)rB   keyvalues      r   append_user_agentzAcsRequest.append_user_agent   s    %%sEl3r   c                     i }d| j                         v r;|j                  d| j                         j                  d      i       t	        |      S |j                  | j                         t	        |      S )Nr   request)r   r   getr:   r   )rB   request_user_agents     r   r   zAcsRequest.request_user_agent   su    4++--%%4++-11,?'  ##566 %%d&<&<="#566r   c                     || _         y r   r7   )rB   rF   s     r   set_location_service_codez$AcsRequest.set_location_service_code   s
    &;#r   c                     | j                   S r   r   rV   s    r   get_location_service_codez$AcsRequest.get_location_service_code   s    ***r   c                     | j                   S r   )r8   rV   s    r   get_location_endpoint_typez%AcsRequest.get_location_endpoint_type   s    +++r   c                 (    | j                  d|       y )NzContent-Typer   )rB   content_types     r   set_content_typezAcsRequest.set_content_type   s    5r   c                      y r   r   rV   s    r   	get_stylezAcsRequest.get_style       r   c                      y r   r   rB   	region_idaksecrets       r   get_urlzAcsRequest.get_url   r   r   c                      y r   r   r   s       r   get_signed_headerzAcsRequest.get_signed_header  r   r   c                     || _         y r   r9   )rB   r9   s     r   set_endpointzAcsRequest.set_endpoint  s	     r   c                     | j                   S r   r<   rV   s    r   get_connect_timeoutzAcsRequest.get_connect_timeout
  s    ,,,r   c                     || _         y r   r   )rB   connect_timeouts     r   set_connect_timeoutzAcsRequest.set_connect_timeout  s
    (7%r   c                     | j                   S r   r=   rV   s    r   get_read_timeoutzAcsRequest.get_read_timeout  s    )))r   c                     || _         y r   r   )rB   read_timeouts     r   set_read_timeoutzAcsRequest.set_read_timeout  s
    %1"r   )NNNopenAPINNN)1__name__
__module____qualname____doc__rJ   rP   rT   rW   r[   r^   ra   rd   rf   ri   rm   ro   rs   rv   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r2   r   r   r   r   r   r   r   abcabstractmethodr   r   r   r   r   r   r   r   r   r   r   r"   r"   @   s5    )-!'+(1##0&d!!! !##$"  (,,( -4
7<+,6 	  	  	 !-8*2r   r"   c                   <    e Zd ZdZddddefdZd Zd Zd Zd	dZ	y)

RpcRequestz5
    Class to compose an RPC style request with.
    Nr   c	                 ~    t         j                  | |||||||t        j                  	       t        | _        || _        y r   )r"   rJ   mtGET	STYLE_RPC_style_signer)	rB   rC   rD   rE   rF   rG   formatprotocolsigners	            r   rJ   zRpcRequest.__init__  sA     	!"FF		  r   c                     | j                   S r   r   rV   s    r   r   zRpcRequest.get_style3      {{r   c                     | j                         }|i }| j                         |d<   | j                         |d<   | j                         |d<   |S )NVersionActionFormat)ro   rd   rf   ri   rB   
req_paramss     r   _get_sign_paramszRpcRequest._get_sign_params6  sZ    **,
J $ 0 0 2
9#335
8#557
8r   c           	         t        | j                               }dt        |      vr||d<   t        j                  |||| j                         | j                         | j                         | j                        \  }}|| _	        |S )NRegionId)
dictr   r   
rpc_signerget_signed_urlri   rs   rW   r   r;   )rB   r   access_key_idaccess_key_secretsign_paramsurlr;   s          r   r   zRpcRequest.get_url@  s    40023Xk22&/K
#(77""$OO  "LL^ -
r   c                     i }t        | j                               D ]-  \  }}|j                  d      s|j                  d      s)|||<   / |S )Nzx-acs-zx-sdk-)r   r   
startswith)rB   r   r   r   r   	headerKeyheaderValues          r   r   zRpcRequest.get_signed_headerO  sU    &/0@0@0B&C 	1"I{##H-1E1Eh1O%0	"	1 r   )NNN)
r   r   r   r   r   rJ   r   r   r   r   r   r   r   r   r     s1     #'#,.r   r   c                   R    e Zd ZdZ	 	 	 	 	 	 	 ddZd Zd Zd Zd Zd Z	d	 Z
dd
Zy)
RoaRequestz5
    Class to compose an ROA style request with.
    Nc                     t         j                  | |||||t        j                  |
|	       t        | _        || _        ||| _        || _        |	| _	        y)a<  

        :param product: String, mandatory
        :param version: String, mandatory
        :param action_name: String, mandatory
        :param method: String
        :param headers: Dict
        :param uri_pattern: String
        :param path_params: Dict
        :param protocol: String
        :return:
        N)
r"   rJ   ftRAW	STYLE_ROAr   r0   r1   r4   _path_params)rB   rC   rD   rE   rF   rG   rI   r   uri_patternpath_paramsr   s              r   rJ   zRoaRequest.__init__\  s^    0 	!"FF		  "DL''r   c                     | j                   S )z"

        :return: String
        r   rV   s    r   r   zRoaRequest.get_style  s    
 {{r   c                     | j                   S r   r   rV   s    r   get_path_paramszRoaRequest.get_path_params  rX   r   c                     || _         y r   r  rB   r  s     r   set_path_paramszRoaRequest.set_path_params  r   r   c                 H    | j                   i | _         || j                   |<   y r   r  rM   s      r   add_path_paramzRoaRequest.add_path_param  &    $ "D !r   c                 n    | j                         }|i }| j                  d| j                                |S r   )ro   r2   rd   r   s     r   r   zRoaRequest._get_sign_params  s:    **,
J)9)9);< r   c                    t        | j                               }| j                         )| j                  dt	        | j                                      d|j                         vr ||d<   | j                  dt        |             t        j                  |||| j                         | j                         j                         | j                         | j                         | j                               \  }}|| _        |S )z
        Generate signed header
        :param region_id: String
        :param ak: String
        :param secret: String
        :return: Dict
        zContent-MD5r   zx-acs-region-id)r   r   r   r2   r   keysstr
roa_signerget_signature_headersri   r   copyr[   r  rs   r;   )rB   r   r   r   r   signed_headerssign_to_strings          r   r   zRoaRequest.get_signed_header  s     40023)OOwt'7'7'9:<[--//&/K
#OO-s9~>)3)I)I""$##%  "  "OO*& -r   c                     t        | j                               }d|j                         vr||d<   t        j                  | j                         || j                               }|S )zm
        Compose request url without domain
        :param region_id: String
        :return: String
        r   )r   ro   r  r  r   r[   r  )rB   r   r   r   r   r   s         r   r   zRoaRequest.get_url  sd     40023[--//&/K
#    "  "$ 
r   )Nr   NNNNN)NN)r   r   r   r   rJ   r   r  r	  r  r   r   r   r   r   r   r   r   W  sG     #'#,'(R!(!
8r   r   c                   x     e Zd Z	 	 d fd	Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Z xZS )CommonRequestc                     t         t        |   |||       d | _        || _        || _        || _        || _        || _        || _	        t        | _        | j                  dd       d | _        d| _        y )Nr&   commonr   )superr  rJ   r   r9   r*   r,   r4   r+   r8   r   r   r2   r   r0   )rB   domainrD   rE   r  rC   rG   	__class__s          r   rJ   zCommonRequest.__init__  so    mT+GWkJ'''=$ +X6 r   c                     | j                   S r   r  rV   s    r   r  zCommonRequest.get_path_params  rX   r   c                     || _         y r   r  r  s     r   r	  zCommonRequest.set_path_params  r   r   c                 H    | j                   i | _         || j                   |<   y r   r  rM   s      r   r  zCommonRequest.add_path_param  r  r   c                     || _         y r   r   )rB   r  s     r   
set_domainzCommonRequest.set_domain  s	    r   c                     | j                   S r   r   rV   s    r   
get_domainzCommonRequest.get_domain  rb   r   c                     || _         y r   rZ   )rB   r  s     r   rv   zCommonRequest.set_uri_pattern  r   r   c                     | j                   S r   rZ   rV   s    r   r[   zCommonRequest.get_uri_pattern  rX   r   c                     || _         y r   r`   r   s     r   r   zCommonRequest.set_product  r   r   c                     | j                   S r   r`   rV   s    r   ra   zCommonRequest.get_product  rb   r   c                 
   | j                   s$t        j                  t        j                  d      | j
                  s0| j                  s$t        j                  t        j                  d      | j                  s0| j                  s$t        j                  t        j                  d      | j                  rht        | _
        t        | j                         | j                         | j                         | j                               | _        | j#                          y t$        | _
        t'        | j                         | j                         | j                         | j                               | _        | j#                          y )Nz4common params [version] is required, cannot be emptyz6At least one of [action] and [uri_pattern] has a valuez7At least one of [domain] and [product_name] has a value)rC   rD   rE   rG   )r*   r   r   r   r   r,   r4   r9   r+   r   r   r   ra   rd   rf   r   r   fill_paramsr   r   rV   s    r   trans_to_acs_requestz"CommonRequest.trans_to_acs_request  s7   }},,--FH H   ):):,,--HJ J }}T]],,--IK K #DK%d.>.>.@$JZJZJ\262F2F2H=A=\=\=^(DL #DK%d.>.>.@$JZJZJ\262F2F2H=A=\=\=^(DL r   c                     | j                   S r   r   rV   s    r   r   zCommonRequest.get_style  r   r   c                 <    | j                   j                  |||      S r   )r   r   r   s       r   r   zCommonRequest.get_url  s    ||##Ir6::r   c                 <    | j                   j                  |||      S r   )r   r   )rB   r   r   r   s       r   r   zCommonRequest.get_signed_header  s    ||--iHYZZr   c                    | j                   j                  | j                                | j                   j                  | j	                                | j                         t        k(  r)| j                   j                  | j                                | j                   j                  | j                                | j                   j                  | j                                | j                   j                  | j                                | j                   j                  | j!                                | j                   j#                  | j%                                | j                   j'                  | j)                                | j                   j+                  | j-                                | j                   j/                  | j1                                | j                   j3                  | j5                                | j                   j7                  | j9                                | j                   j;                  | j=                                y r   )r   rv   r[   rz   r^   r   r   r	  r  r|   rs   r   ra   r   rd   r   rf   r   ri   r   rm   r   ro   r   r   r   r   r   r   r   rW   rV   s    r   r*  zCommonRequest.fill_params!  s   $$T%9%9%;<##D$7$7$9:>>y(LL(()=)=)?@ 12  !1!1!34  !1!1!34$$T%9%9%;<&&t'='='?@&&t'='='?@%%d&;&;&=>  !1!1!34  !1!1!34..**,	. 	$$T%9%9%;<r   )NNNNNr   )r   r   r   rJ   r  r	  r  r"  r$  rv   r[   r   ra   r+  r   r   r   r*  __classcell__)r  s   @r   r  r    sU    ^b(1 !(!
(! :;[=r   r  )&r   aliyunsdkcore.vendored.sixr   r   r   aliyunsdkcore.httpr   r   r   r   r   aliyunsdkcore.auth.composerr	   r   r
   r  $aliyunsdkcore.utils.parameter_helperr   aliyunsdkcore.auth.algorithmr   aliyunsdkcore.acs_exceptionr   r   aliyunsdkcore.compatr   *aliyunsdkcore.vendored.requests.structuresr   r   r   r   r   r   r    ABCMetar"   r   r   r  r   r   r   <module>r:     s   *  / 0 4 , 0 0 L L 8 2 2 2 . J 		&++ 	
" s{{S2 S2 S2l= =@s slr=J r=r   