
    @Wjj                     4   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  \	R                  " \5      rSr\" 5       rSrSrSrSrS	rS
rSrSrSrSrSrSrSrSrSrSr Sr!S r"S r#S S jr$S r% " S S\&5      r' " S S\&5      r( " S S\&5      r)g)!z+
Created on 2018-03-21

@author: xuteng.xt
    N)localziop-sdk-python-20220609app_keysession	timestampsignsign_method
partner_idmethoddebugsimplifyformatcodetypemessage
request_idDEBUGINFOERRORc                 x  ^ [        T5      nSU;   a*  U< [        5       R                  U4S jU 5       5      < 3nO#[        5       R                  U4S jU 5       5      n[        R                  " U R                  SS9UR                  SS9[        R                  S9nUR                  5       R                  5       $ )N/c              3   8   >#    U  H  o< TU   < 3v   M     g 7fN .0key
parameterss     چ/Users/waleedhassanin/Documents/snowflake_co_dev_github/snow_flake_back_end_deploy/mama_care_api/ali_express_ds/iop/ali_express_sdk.py	<genexpr>sign.<locals>.<genexpr>7   s     1g]fVYCC2Q]f   c              3   8   >#    U  H  o< TU   < 3v   M     g 7fr   r   r   s     r   r   r    9   s     #Yyc:c?$Cyr!   utf-8)encoding)	digestmod)
sortedstrjoinhmacnewencodehashlibsha256	hexdigestupper)secretapir   	sort_dictparameters_strhs     `   r   r   r   0   s    
 z"I
cz#&suzz1g]f1g'gh#Yy#YY0.2G2GQX2G2YelesestA;;=      c                     [        U [        5      (       a  U $ [        U [        5      (       a  U R                  S5      $ [        U 5      $ )Nr#   )
isinstancer'   unicoder+   )pstrs    r   mixStrr:   @   s:    $	D'	"	"{{7##4yr5   c                 Z    [         R                  SU UU=(       d    SU=(       d    S5        g)z>Log an API failure without request credentials or signed URLs.zIAliExpress API request failed: method=%s code=%s request_id=%s message=%s-N)loggererror)r1   r   r   r   s       r   logApiErrorr?   H   s&    
LLSc3r5   c                  $    [        [        SS 5      $ )Nvalue)getattrLAST_RESPONSEr   r5   r   get_last_responserD   S   s    ='400r5   c                   6    \ rS rSrS	S jrS rS rS rS rSr	g)

IopRequestV   c                 T    0 U l         0 U l        Xl        X l        SU l        SU l        g )Nfalsejson)_api_params_file_params	_api_pame_http_method	_simplify_format)selfapi_pamehttp_methods      r   __init__IopRequest.__init__W   s+    !' r5   c                      X R                   U'   g r   )rK   rQ   r   rA   s      r   add_api_paramIopRequest.add_api_param_   s     %r5   c                      X R                   U'   g r   )rL   rW   s      r   add_file_paramIopRequest.add_file_parama   s    !&#r5   c                     SU l         g )Ntrue)rO   rQ   s    r   set_simplifyIopRequest.set_simplifyc   s	    r5   c                     Xl         g r   )rP   )rQ   rA   s     r   
set_formatIopRequest.set_formate   s    r5   )rM   rK   rL   rP   rN   rO   N)POST)
__name__
__module____qualname____firstlineno__rT   rX   r[   r`   rc   __static_attributes__r   r5   r   rF   rF   V   s    &' r5   rF   c                        \ rS rSrS rS rSrg)IopResponseh   c                 J    S U l         S U l        S U l        S U l        S U l        g r   )r   r   r   r   bodyr_   s    r   rT   IopResponse.__init__i   s%    			r5   c                     S[        U R                  5      -   S-   [        U R                  5      -   S-   [        U R                  5      -   S-   [        U R                  5      -   nU$ )Nztype=z code=z	 message=z requestId=)r:   r   r   r   r   )rQ   argskwargssbs       r   __str__IopResponse.__str__p   sk    vdii((dii() ./  #4??34 	r5   )ro   r   r   r   r   N)rf   rg   rh   ri   rT   ru   rj   r   r5   r   rl   rl   h   s    r5   rl   c                   ,    \ rS rSr\rSS jrSS jrSrg)	IopClientw   c                 4    Xl         X l        X0l        X@l        g r   )_server_url_app_key_app_secret_timeout)rQ   
server_urlr   
app_secrettimeouts        r   rT   IopClient.__init__z   s    %%r5   Nc                    [         U R                  [        S[        [	        [        [        [        R                  " 5       5      5      5      S-   [        [        [        UR                  [        UR                  [        UR                  0nU R                   ["        :X  a	  SU[$        '   U(       a  X#[&        '   UR(                  nUR+                  5       nUR-                  U5        [/        U R0                  UR                  U5      U[2        '   U R4                  n UR6                  S:X  d  [9        UR:                  5      S:w  a+  [<        R>                  " XeUR:                  U R@                  S9nO[<        RB                  " XeU R@                  S9nURE                  5         [S        5       n
URU                  5       n[V        U;   a  U[V           U
l,        [Z        U;   a  U[Z           U
l'        [\        U;   a  U[\           U
l/        [`        U;   a  U[`           U
l1        U
RX                  bG  U
RX                  S:w  a7  [M        UR                  U
RX                  U
R^                  U
Rb                  5        O\U R                   ["        :X  d  U R                   [d        :X  a4  [f        Ri                  SUR                  U
Rb                  =(       d    S5        Xl5        U
[l        l7        U
$ ! [<        RF                   a]  nURH                  b  URH                  RJ                  OSn	[M        UR                  S	[O        U5      RP                  < S
U	< S35        e S nAff = f)Nr-   000r^   re   r   )filesr   )r   unavailable
HTTP_ERRORz	 (status=)0z9AliExpress API request succeeded: method=%s request_id=%sr<   )8P_APPKEYr|   P_SIGN_METHODP_TIMESTAMPr'   introundtimeP_PARTNER_IDP_SDK_VERSIONP_METHODrM   
P_SIMPLIFYrO   P_FORMATrP   	log_levelP_LOG_LEVEL_DEBUGP_DEBUGP_ACCESS_TOKENrK   copyupdater   r}   P_SIGNr{   rN   lenrL   requestspostr~   getraise_for_statusRequestExceptionresponsestatus_coder?   r   rf   rl   rJ   P_CODEr   P_TYPE	P_MESSAGEr   P_REQUEST_IDr   P_LOG_LEVEL_INFOr=   inforo   rC   rA   )rQ   requestaccess_tokensys_parametersapplication_parametersign_parameterapi_urlrerrr   r   jsonobjs               r   executeIopClient.execute   s   dmm8Styy{!345=-g''))W__
 >>..&,N7#-9>* ' 3 3',,.34!%d&6&6w7H7H!Xv""	##v-W5I5I1Ja1OMM'w?S?S]a]j]jkLLO  =&&(W#FOHMW#FOHM&y1H7""),"7H==$#)=!!  ##	 ~~!22dnnHX6XO%%''.3  &Y (( 	 <<+ ((" 
 !!$(I$6$6D
 	s   BK M	,AMM	)r|   r}   r{   r~   )   r   )	rf   rg   rh   ri   P_LOG_LEVEL_ERRORr   rT   r   rj   r   r5   r   rx   rx   w   s    !I Lr5   rx   )NN)*__doc__r   r   r)   r,   rJ   	mimetypes	itertoolsrandomlogging	threadingr   	getLoggerrf   r=   r   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   r?   rD   objectrF   rl   rx   r   r5   r   <module>r      s             			8	$)	

			
    ! 1 $& U Ur5   