
    Qj                     &   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZ ddlZddlZddlmZ  ed          Ze
j                            edz             Zes e
j        edz               e	j        e          Ze                    e	j                    e	j        edz    ej        d	 ej                              z             Ze                    e	j                    e	j        d
          Z e!                    e            e"                    e           dZ# e            Z$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5d Z6d Z7d Z8d  Z9 G d! d"e:          Z; G d# d$e:          Z< G d% d&e:          Z=dS )'z+
Created on 2018-03-21

@author: xuteng.xt
    N)
expanduser)local~z/logs)levelz/logs/iopsdk.log.z%Y-%m-%dz%(message)sz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                    t                    }d|v r2|t                                          fd|D                       }n-t                                          fd|D                       }t          j        |                     d          |                    d          t          j                  }|                                	                                S )N/c              3   0   K   | ]}||         V  d S N .0key
parameterss     3mama_care_api/ali_express_ds/iop/ali_express_sdk.py	<genexpr>zsign.<locals>.<genexpr>G   s1      1g1gVYCCC2Q1g1g1g1g1g1g    c              3   0   K   | ]}||         V  d S r   r   r   s     r!   r"   zsign.<locals>.<genexpr>I   s0      #Y#Ycc:c??$C#Y#Y#Y#Y#Y#Yr#   utf-8)encoding)	digestmod)
sortedstrjoinhmacnewencodehashlibsha256	hexdigestupper)secretapir    	sort_dictparameters_strhs     `   r!   r
   r
   @   s    
 z""I
czz#&3suuzz1g1g1g1g]f1g1g1g'g'g'gh#Y#Y#Y#Yy#Y#Y#YYY00.2G2GQX2G2Y2YelestttA;;==   r#   c                     t          | t                    r| S t          | t                    r|                     d          S t          |           S )Nr%   )
isinstancer)   unicoder-   )pstrs    r!   mixStrr;   P   sI    $ 	D'	"	" {{7###4yyr#   c                     t          j        t          j                              }t          j                    }t                              | d|dt          j        dt          j                              d|d|d|d|d|           d S )Nz^_^z%Y-%m-%d %H:%M:%S)	socketgethostbynamegethostnameplatformloggererrortimestrftime	localtime)appkey
sdkVersion
requestUrlr   r   localIpplatformTypes          r!   logApiErrorrK   X   s    "6#5#7#788G$&&L
LL


)4>+;+;<<<<zzz444: ; ; ; ; ;r#   c                  .    t          t          dd           S )Nvalue)getattrLAST_RESPONSEr   r#   r!   get_last_responserP   a   s    ='4000r#   c                   .    e Zd ZddZd Zd Zd Zd ZdS )	
IopRequestPOSTc                 Z    i | _         i | _        || _        || _        d| _        d| _        d S )Nfalsejson)_api_params_file_params	_api_pame_http_method	_simplify_format)selfapi_pamehttp_methods      r!   __init__zIopRequest.__init__e   s3    !' r#   c                     || j         |<   d S r   )rW   r]   r   rM   s      r!   add_api_paramzIopRequest.add_api_paramm   s     %r#   c                     || j         |<   d S r   )rX   rb   s      r!   add_file_paramzIopRequest.add_file_paramo   s    !&#r#   c                     d| _         d S )Ntrue)r[   r]   s    r!   set_simplifyzIopRequest.set_simplifyq   s    r#   c                     || _         d S r   )r\   )r]   rM   s     r!   
set_formatzIopRequest.set_formats   s    r#   N)rS   )__name__
__module____qualname__r`   rc   re   ri   rk   r   r#   r!   rR   rR   d   sd           & & &' ' '         r#   rR   c                       e Zd Zd Zd ZdS )IopResponsec                 L    d | _         d | _        d | _        d | _        d | _        d S r   )r   r   r   r   bodyrh   s    r!   r`   zIopResponse.__init__w   s)    					r#   c                     dt          | j                  z   dz   t          | j                  z   dz   t          | j                  z   dz   t          | j                  z   }|S )Nztype=z code=z	 message=z requestId=)r;   r   r   r   r   )r]   argskwargssbs       r!   __str__zIopResponse.__str__~   so    vdi(((di(() ../  #4?334 	r#   N)rl   rm   rn   r`   rw   r   r#   r!   rp   rp   v   s2              r#   rp   c                   "    e Zd ZeZddZddZdS )	IopClient   c                 >    || _         || _        || _        || _        d S r   )_server_url_app_key_app_secret_timeout)r]   
server_urlr   
app_secrettimeouts        r!   r`   zIopClient.__init__   s$    %%r#   Nc                    t           | j        t          dt          t	          t          t          t          j                                                  dz   t          t          t          |j        t          |j        t          |j        i}| j        t"          k    r
d|t$          <   |r
||t&          <   |j        }|                                }|                    |           t/          | j        |j        |          |t2          <   | j        }|dz   }|D ]#}||dz   t	          ||                   z   dz   z  }$|dd         }	 |j        d	k    st9          |j                  dk    r#t=          j        |||j        | j         
          }	nt=          j!        ||| j                   }	n># tD          $ r1}
tG          | j        t          |dt	          |
                     |
d }
~
ww xY wtI                      }|	%                                }tL          |v r|tL                   |_'        tP          |v r|tP                   |_)        tT          |v r|tT                   |_+        tX          |v r|tX                   |_-        |j'        3|j'        dk    r(tG          | j        t          ||j'        |j+                   n=| j        t"          k    s| j        t\          k    rtG          | j        t          |dd           ||_/        |t`          _1        |S )Nr/   000rg   ?=&r   rS   )filesr   )r   
HTTP_ERROR0 )2P_APPKEYr}   P_SIGN_METHODP_TIMESTAMPr)   introundrC   P_PARTNER_IDP_SDK_VERSIONP_METHODrY   
P_SIMPLIFYr[   P_FORMATr\   	log_levelP_LOG_LEVEL_DEBUGP_DEBUGP_ACCESS_TOKENrW   copyupdater
   r~   P_SIGNr|   rZ   lenrX   requestspostr   get	ExceptionrK   rp   rV   P_CODEr   P_TYPEr   	P_MESSAGEr   P_REQUEST_IDr   P_LOG_LEVEL_INFOrr   rO   rM   )r]   requestaccess_tokensys_parametersapplication_parametersign_parameterapi_urlfull_urlr   rerrresponsejsonobjs                r!   executezIopClient.execute   s   dm8Sty{{!3!34455=-g')W_
 >...&,N7# 	:-9N>* ' 3',,..3444!%d&6w7H!X!Xv"S=! 	C 	CCc	Cs(;$<$<<sBBHHAbD>	#v--W5I1J1Ja1O1OM'.w?S]a]jkkkLOOO 	 	 	}hcRUhhWWWI	 ==&&((W#FOHMW#FOHM&y1H7"""),"7H=$#)=)=}hxO_````~!222dnHX6X6XDM=(BKKK&s   >A"F! !
G+,GG)rz   r   )rl   rm   rn   P_LOG_LEVEL_ERRORr   r`   r   r   r#   r!   ry   ry      sA        !I       > > > > > >r#   ry   )>__doc__r   rC   r+   r.   rV   	mimetypes	itertoolsrandomloggingosos.pathr   r=   r@   	threadingr   dirpathexistsisExistsmakedirs	getLoggerrl   rA   setLevelr   FileHandlerrD   rE   handler	Formatter	formattersetFormatter
addHandlerr   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r;   rK   rP   objectrR   rp   ry   r   r#   r!   <module>r      s                   				               joo7>>#-(( BKg		8	$	$  & & &
'
c$77-$-
TbTXTbTdTd:e:ee
f
f      Gm,,	   Y      '   )	

			
    ! ! !   ; ; ;1 1 1       $    &   G G G G G G G G G Gr#   