
    `iB                         S SK JrJrJrJrJr  S SKJrJrJ	r	J
r
Jr  S SKJrJr  S SKJs  Js  Js  Jr  S SKr " S S5      rS rS	S jrg)
    )postSessionRequestRequestExceptionConnectionError)addondialogVSlogVSPathisMatrix)urlHostName	QuotePlusNc                       \ rS rSrSrSrSrSrSrS S j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 rS!S jrS rSr g)"cRequestHandler   r            	dnspythonc                 ~   Xl         SU l        SU l        0 U l        SU l        0 U l        0 U l        U R                  S5        U R                  S5        U R                  5         SU l
        SU l        SU l        SU l        SU l        X l        [!        5       U l        SU l        SU l        0 U l        SU l        S U l        g )N r   T   F)_cRequestHandler__sUrl_cRequestHandler__sRealUrl_cRequestHandler__cType_cRequestHandler__aParamaters!_cRequestHandler__aParamatersLine _cRequestHandler__aHeaderEntries_cRequestHandler__CookieremoveBreakLinesremoveNewLines"_cRequestHandler__setDefaultHeader_cRequestHandler__timeout!_cRequestHandler__bRemoveNewLines#_cRequestHandler__bRemoveBreakLines!_cRequestHandler__sResponseHeaderBUG_SSL_cRequestHandler__enableDNSr   s	redirectsverifyjson	forceIPV4	oResponse)selfsUrlforceDNSs      T/home/kodi/.kodi/addons/plugin.video.vstream/resources/lib/handler/requestHandler.py__init__cRequestHandler.__init__   s    !# "d#D!!!&#( !##	    c                 .    U R                   R                  $ N)r.   status_coder/   s    r2   
statusCodecRequestHandler.statusCode,   s    ~~)))r5   c                     SU l         g )NT)r-   r9   s    r2   disableIPV6cRequestHandler.disableIPV60   s	    r5   c                 p    [         R                  n[        R                  (       a  [         R                  nU$ )zJ
https://github.com/shazow/urllib3/blob/master/urllib3/util/connection.py
)socketAF_INET
urllib3_cnHAS_IPV6)r/   familys     r2   allowed_gai_family"cRequestHandler.allowed_gai_family3   s$     ^^Fr5   c                     SU l         g NF)r+   r9   s    r2   
disableSSLcRequestHandler.disableSSL=   s	    r5   c                     SU l         g rH   )r*   r9   s    r2   disableRedirectcRequestHandler.disableRedirectA   s	    r5   c                     Xl         g r7   )r$   )r/   bRemoveNewLiness     r2   r!   cRequestHandler.removeNewLinesD       !0r5   c                     Xl         g r7   )r%   )r/   bRemoveBreakLiness     r2   r     cRequestHandler.removeBreakLinesG   s    #4 r5   c                     Xl         g r7   )r   )r/   cTypes     r2   setRequestTypecRequestHandler.setRequestTypeM   s    r5   c                     Xl         g r7   )r#   )r/   valeurs     r2   
setTimeoutcRequestHandler.setTimeoutQ   s    r5   c                 @    X0nU R                   R                  U5        g r7   )r   updater/   
sHeaderKeysHeaderValueaHeaders       r2   addCookieEntrycRequestHandler.addCookieEntryU   s    ,W%r5   c                 @    X0nU R                   R                  U5        g r7   )r,   r^   r_   s       r2   addJSONEntrycRequestHandler.addJSONEntryZ   s    ,		!r5   c                     [        U R                  5       H6  nX;   a  U R                  R                  U5        US:X  d  M+  [        U5      nM8     X0nU R                  R	                  U5        g )NContent-Length)listr   popstrr^   )r/   r`   ra   sublistrb   s        r2   addHeaderEntrycRequestHandler.addHeaderEntry_   sb    D112G$%%))'2--"<0 3 ,$$W-r5   c                      X R                   U'   g r7   )r   )r/   sParameterKeymParameterValues      r2   addParameterscRequestHandler.addParametersk   s    ,;=)r5   c                     Xl         g r7   )r   )r/   rr   s     r2   addParametersLine!cRequestHandler.addParametersLineo   rQ   r5   c                     [        U5      nUS   U l        U R                  SUS   5        U R                  S[        US   5      5        g )Nr   zContent-Typer   ri   )MPencoder   rn   len)r/   fields	mpartdatas      r2   addMultipartFiled!cRequestHandler.addMultipartFileds   sF    V$	!*1NIaL9,c)A,.?@r5   c                     U R                   $ r7   )r&   r9   s    r2   getResponseHeader!cRequestHandler.getResponseHeaderz   s    %%%r5   c                     U R                   $ r7   )r   r9   s    r2   
getRealUrlcRequestHandler.getRealUrl~   s    r5   c                 $    U R                  U5      $ r7   )_cRequestHandler__callRequest)r/   
jsonDecodes     r2   requestcRequestHandler.request   s     !!*--r5   c                    U R                   (       d  gSU R                   ;   a]  SS KnU R                   R                  S5      nUR                  SU5      nU(       a%  SnU H  nXES   -   S-   US   -   S-   nM     US S	 nU$ g)
Nr   z
Set-Cookier   z
set-cookiez(?:^|,) *([^;,]+?)=([^;,]+?);=r   ;)r&   regetfindall)r/   r   cc2cookiescooks         r2   
GetCookiescRequestHandler.GetCookies   s    %%4111&&**<8A;Q?BD%Q/#5Q?#EG !#2,r5   c                 p    U R                  SS5        U R                  SS5        U R                  SS5        g )Nz
User-AgentzHMozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0zAccept-Languagez#fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3zAccept-CharsetzISO-8859-1,utf-8;q=0.7,*;q=0.7)rn   r9   s    r2   __setDefaultHeader"cRequestHandler.__setDefaultHeader   s7    L*tu-/TU,.NOr5   c                 j   U R                   (       a*  [        R                  U l        U R                  [        l        U R
                  (       a  U R
                  nOU R                  nU(       a  U R                  [        R                  :X  as  [        U5      S:  ad  U R                  R                  S5      S:X  a#  U R                  S-   [        U5      -   U l        SnO"U R                  S-   [        U5      -   U l        SnSnU R                  S:X  a  SU l        U R                  [        R                  :X  a  SnObU R                  [        R                   :X  a  S	nOAU R                  [        R"                  :X  a  S
nO U R                  [        R$                  :X  a  SnU R&                  (       a  U R(                  [*        l         [-        WU R                  U R.                  S9nUS;   a  X6l        U R2                  (       a  U R2                  Ul        U R6                  (       a  U R6                  Ul        UR9                  5       nU R:                  R<                  R?                  U R.                  5        U R:                  RA                  XpRB                  U RD                  U R                  S9U l#        U RF                  R<                  U l$        U RF                  RJ                  U l&        U RF                  Gb  U(       a  U RF                  R7                  5       nOPU RF                  Rb                  n[e        5       (       a+  SU RF                  RJ                  ;  a   URg                  5       nU RF                  Rh                  S;   Ga  SU;  Ga  SU;  Ga  SSK5J6n  U" 5       nURo                  S 5      (       aV  URq                  S 5      nU(       a>  XR                  ;  a/  U[s        U R                  5      -   U l        U RQ                  US5      $ [W        5       Ru                  S!5      S":X  a  S#[W        5       Ru                  S$5      -   S%-   nSn S&WRw                  5       -  U R                  S'.nS(U R                  ;   a  U R                  S(   US('   [y        XR.                  US)9nU(       aA  UR7                  5       nS*U;   a+  U R                  US*   S+   :w  a  US*   S+   U l&        US*   S,   nO4[]        5       R_                  S.< S[[        U RL                  5      < S35        U RF                  by  U(       dr  / S/QnU RF                  Rh                  U;  aT  []        5       R_                  S0[W        5       RY                  S5      U RF                  Rh                  U R                  4-  5        U(       aV  U Rz                  S:X  a$  UR}                  S1S5      nUR}                  S2S5      nU R~                  S:X  a  UR}                  S3S5      nU R                   (       a  U R                  [        l        SU l         U$ ! [N         a  n[        U5      n	SU	;   a-  U R                  S:X  a  SU l        U RQ                  U5      s S nA$ U R                   S:X  a  SU	;   d  SU	;   d  SU	;   d  SU	;   a  SS K)n
U
RU                  S5      (       a  SU l         U RQ                  U5      s S nA$ [W        5       RY                  S5      < S[[        U R                  5      < S3n[]        5       R_                  U5        Sn S nAGNB S nAgS nAf[`         Ga  nS[        U5      ;   a-  U R                  S:X  a  SU l        U RQ                  U5      s S nA$ U R                   S:X  a{  S[        U5      ;   al  SS K)n
U
RU                  S5      (       a  SU l         U RQ                  U5      s S nA$ [W        5       RY                  S5      < S[[        U R                  5      < S3nO.[W        5       RY                  S5      < SU< SU R                  < 3n[]        5       R_                  U5        Sn S nAGNkS nAff = f!    URg                  S5      n GN
!     GN= f= f!   []        5       R_                  S-< S[[        U RL                  5      < S35         GN= f)4Nr   ?r   r   &TFGETPOSTPUTDELETE)headers)r   )timeoutallow_redirectsr+   CERTIFICATE_VERIFY_FAILEDzgetaddrinfo failedz$Failed to establish a new connectionzFailed to resolveTimeoutz.special://home/addons/script.module.dnspython/iw  z ()iu  z),youtubezunicode-escape)i  i  	ForbiddenzJust a momentsiteManager
cloudproxyuse_flaresolverrtruezhttp://	ipaddressz:8191/v1z
request.%s)cmdurlpostData)r   r,   solutionr   responseu"   Page protegee malgré FlareSolverrz2Page protegee par Cloudflare, essayez FlareSolverr)      i.  z
%s (%d),%s
z	z&nbsp;)@r(   r@   getaddrinfosave_getaddrinfonew_getaddrinfor   r   r   r   REQUEST_TYPE_GETrz   r   findrl   r'   r+   REQUEST_TYPE_POSTREQUEST_TYPE_PUTREQUEST_TYPE_DELETEr-   rE   rB   r   r   datar   r   r,   preparer)   r   r^   sendr#   r*   r.   r&   r   r   r   r   xbmcvfsexistsr   VSlangr   r	   VSerrorr   contentr   decoder8   resources.lib.comaddonr   isActive
getUrlMainr   
getSettinglowerr   r$   replacer%   )r/   r   paramGetsParameterssContentmethod_requestpreppedeerrorMsgr   	error_msgr   sitesManagercloudProxyUrlCLOUDPROXY_ENDPOINTjson_response	paramJsonr   ignoreStatuss                       r2   __callRequestcRequestHandler.__callRequest   s   $*$6$6D!!%!5!5F!!00K,,K)I)IIK 1$KK$$S)R/"&++"3c+6F"FDK"$K"&++"3c+6F"FDK"$K<<4DK<<?;;;F\\_>>>F\\_===F\\_@@@F>>,0,C,CJ)9	vt{{D<Q<QRH! +}}#'== yy $		&&(GFFNN!!$"7"78!VV[[..Z^ZhZhquq|q|[}DN%)^^%;%;D""nn00DOV >>%>>..0>>11::)4>>3E3E"E!#+??#4 ~~))Z7h.?(3R C#.=L#,,\::(4(?(?(M(]++-M*7)DKK:P*PDK#'#5#5j%#HH w))*<=G.7%':L:L[:Y.Y\f.f+(- (4flln'D'+{{)I  *T-?-??8<8J8J:8V	* 5,01DNcNcjs,tM,+8+=+=+?#-#9'+{{hz6J56Q'Q:B::Nu:U/7
/CJ/OH ((6jlwx|  yH  yH  mI  *J  K~~)(.>>--\AH$$\UW^^E5JDNNLfLfhlhshs4t%tu&&$.#++D"5#++FB7((D0#++Hb9!%!6!6F$De  	1vH*h64<<5;P#))*55!!U*0D0P1W[c1c1D1P1:h1F>>"RSS'+D$--j99-2W^^E-BKPTP[P[D\ ]IH$$Y/!H 	*c!f49N#))*55!!U*/Cs1v/M>>"RSS'+D$--j99-2W^^E-BKPTP[P[D\ ]I,1GNN5,A1dkkR	HY'H!	6!!'/7G'HH! H"H,,:^`klpl{l{`|-}~s   D"X) a Ba9 )
a38\*+a1A\*
aA\**a86a.a4Aaa
A>aaa6a--a3/a63a696b2c                     SS K nSS KnSSKJn  [	        5       (       a  [        S5      nO[        S5      R                  S5      nXRR                  ;  a  UR                  R                  U5        US   nUS   nSU;   a  XfR                  S5      S  nSU;   a  US UR                  S5       nUR                  R                  SS	9nU" 5       R                  U R                  5      n	U	S
:X  a  Sn	[        U	5      Ul        UR!                  US5      n
[#        U
S   5      n[%        SU-  5        SSSS
X44SSSS
X44/$ ! [&         a3  n[%        SR)                  U5      5        U R*                  " U6 s S nA$ S nAff = f)Nr   r   z2special://home/addons/script.module.dnspython/lib/zutf-8r   z///F)	configurer   zk['1.1.1.1', '2606:4700:4700::1111', '80.67.169.12', '2001:910:800::12', '80.67.169.40', '2001:910:800::40']aznew_getaddrinfo found host %sr   znew_getaddrinfo ERROR: {0})sysdns.resolverr   r   r   r   r   pathappendr   resolverResolverr   SITE_IDENTIFIERevalnameserversqueryrl   r
   	Exceptionformatr   )r/   argsr   dnsr   r   hostportr   URL_MAINanswer
host_foundr   s                r2   r   cRequestHandler.new_getaddrinfoH  sm   "	0:zzRSRSZZ[bc88#%7D7Dt|IIdO,-d{OTYYs^,||,,u,=H #}//0D0DEH2~ I#'>H ^^D#.FVAYJ1J>?1b:"451ajEW7XYY 	0.55a89(($//	0s   D8D; ;
E8(E3-E83E8)r'   __Cookie__aHeaderEntries__aParamaters__aParamatersLine__bRemoveBreakLines__bRemoveNewLines__cType__enableDNS
__sRealUrl__sResponseHeader__sUrl	__timeoutr-   r,   r.   r*   r)   r   r+   N)F)FT)!__name__
__module____qualname____firstlineno__r   r   r   r   r   r3   r:   r=   rE   rI   rL   r!   r    rW   r[   rc   rf   rn   rs   rv   r}   r   r   r   r   r"   r   r   __static_attributes__ r5   r2   r   r      s    !O0*15 &
"
	.<1A&.$P
hT#0r5   r   c                    SS K n[        5       nSU-  n/ nU (       a   U R                  5       nU H  u  pg[	        US5      (       d"  SU< SU< SU< S3nUR                  U5        M8  [	        US5      (       a  U   UR                  UR                  5      S   (       a  UR                  UR                  5      S   OSn	SU< SU< S	UR                  < S
U	< SUR                  5       < S3nS S S 5        UR                  W5        M  [        US5      e   O UR                  SU-  5        USR                  U5      4$ !   U R                  5       n GN'= f! , (       d  f       Np= f)Nr   z multipart/form-data, boundary=%sreadz--z(
Content-Disposition: form-data; name="z"

z
zapplication/octet-streamz"; filename="z"
Content-Type: z

z;Field is neither a file handle or any other decodable type.z--%s--
r   )	mimetypes__randy_boundary	iteritemsitemshasattrr   
guess_typenamer
  r   join)
r{   r  random_boundarycontent_type	form_datar   keyvalueitemstrfile_mimetypes
             r2   ry   ry   q  sj   &(O5GLI	"##%D !LS5&))_npsuz{  )''KTK_K_`e`j`jKklmKnI$8$8$DQ$G  uOM GV  X[  ]b  ]g  ]g  iv  x}  xB  xB  xD  EG    )'dee ! 	\O34+++'	"<<>D Us   E  ;A3E E
E&	c                 x   SS K nSS Kn[        5       (       a  UR                  UR                  -   nOUR
                  UR                  -   n/ n[        SU 5       H4  nUR                  S[        U5      S-
  5      nUR                  XG   5        M6     U(       a  UR                  U5        O SR                  U5      $ )Nr   r   r   )stringrandomr   ascii_lettersdigitslettersrangerandintrz   r   shuffler  )length	reshuffler  r  character_stringboundary_stringi
rand_indexs           r2   r  r    s    zz!//&--?!>>FMM9O1f^^As+;'<q'@A
/;<  '77?##r5   )
   F)requestsr   r   r   r   r   r   r   r	   r
   r   r   resources.lib.utilr   r   )requests.packages.urllib3.util.connectionpackagesurllib3util
connectionrB   r@   r   ry   r  r  r5   r2   <module>r1     s:    O N I I 5 ? > ^0 ^0H,@$r5   