§
    ºÔjU  ã                   óš  — 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Zej	         
                    de› d�¦  «        Zej	                             e¦  «        Zej                             e¦  «         ej        Zed                              d¦  «        sded         z   ned         Z ej        ed         › d	ed
         › �                     ¦   «         ¦  «                             ¦   «         ZdZdZd„ Zddeefd„Z	 	 dd„Zdd„Zd„ Zedk    r@ edd¦  «        \  ZZ  e!de¦  «          e! ej"        e d¬¦  «        dd…         ¦  «         dS dS )a›  Klien HTTP mentah ke theskincodeclinic.com lewat `openssl s_client`.

Latar: sejak DPI memblokir ClientHello curl/urllib, semua request REST/XML-RPC
ke situs klien harus lewat CLI openssl. Modul ini menangani chunked encoding,
Basic auth, POST JSON, dan upload biner.

Pakai:
    from tsc_http import rest, rest_json, xmlrpc_call
    st, data = rest_json("GET", "/wp-json/wp/v2/posts?per_page=1&status=future")
é    Nz//home/mantapman/.hermes/profiles/atun/workspaceÚcfgz/cfg_tsc.pyÚdomainzwww.Úuserú:Úpassé   éZ   c                 óÌ  — |                       d¦  «        \  }}}|                     dd¦  «                             d¦  «        }|r|d                              d¦  «        st	          d|d d…         › �¦  «        ‚t          |d                              ¦   «         d         ¦  «        }i }|dd …         D ]Z}d	|v rT|                     d	d¦  «        \  }}	|	                     ¦   «         ||                     ¦   «                              ¦   «         <   Œ[|                     d
d¦  «                             ¦   «         dk    r†|d}}
	 |
 	                    d¦  «        }|dk     rnbt          |
d |…                              d¦  «        d         d¦  «        }|dk    rn*||
|dz   |dz   |z   …         z  }|
|dz   |z   dz   d …         }
Œ~|}n!d|v r|d t          |d         ¦  «        …         }|||fS )Ns   

úutf-8Úreplaceú
r   zHTTP/zheader HTTP tidak valid: é   r   ztransfer-encodingÚ Úchunkedó    Ts   
ó   ;é   é   zcontent-length)
Ú	partitionÚdecodeÚsplitÚ
startswithÚRuntimeErrorÚintÚstripÚlowerÚgetÚfind)ÚrawÚheadÚ_ÚrestÚlinesÚstatusÚhdrsÚlnÚkÚvÚbufÚoutÚposÚsizes                 ú;/home/mantapman/.hermes/profiles/atun/workspace/tsc_http.pyÚ_parser.      s  € Ø—M’M +Ñ.Ô.�M€Dˆ!ˆTØ�KŠK˜ Ñ+Ô+×1Ò1°&Ñ9Ô9€EØð D˜˜aœ×+Ò+¨GÑ4Ô4ð DÝÐB°u¸R¸a¸R´yÐBÐBÑCÔCÐCÝ��q”—’Ñ!Ô! !Ô$Ñ%Ô%€FØ€DØ�A�B�BŒið 0ð 0ˆØ�"ˆ9ˆ9Ø—8’8˜C Ñ#Ô#‰DˆAˆqØ&'§g¢g¡i¤iˆD�—’‘”—’Ñ"Ô"Ñ#øØ‡x‚xÐ# RÑ(Ô(×.Ò.Ñ0Ô0°IÒ=Ð=Ø˜ˆSˆð	+Ø—(’(˜7Ñ#Ô#ˆCØ�QŠwˆwØÝ�s˜4˜C˜4”y—’ tÑ,Ô,¨QÔ/°Ñ4Ô4ˆDØ�qŠyˆyØØ�3�s˜Q‘w˜s Q™w¨™~Ð-Ô.Ñ.ˆCØ�c˜A‘g ‘n qÑ(Ð)Ð)Ô*ˆCð	+ð ˆˆØ	˜TÐ	!Ð	!ØÐ0•S˜Ð.Ô/Ñ0Ô0Ð0Ô1ˆØ�4˜ÐÐr   c                 óÎ  — t           dddœ}|                     |pi ¦  «         |�t          t          |¦  «        ¦  «        |d<   | › d|› d�gd„ |                     ¦   «         D ¦   «         z   d	gz   }d
                     |¦  «        dz                        ¦   «         |pdz   }d}	t          d|dz   ¦  «        D �]}
	 t          j	        ¦   «         5 }t          j        ddddt           › d�dt           gt          j        t          j        |¬¦  «        }	 |                     ||¬¦  «        \  }}nJ# t          j        $ r8 |                     ¦   «          |                     ¦   «          t!          d¦  «        ‚w xY w	 ddd¦  «         n# 1 swxY w Y   t#          |¦  «        c S # t$          $ r$}|}	t'          j        d|
z  ¦  «         Y d}~�Œd}~ww xY wt!          d|› d| › d|› d|	› �¦  «        ‚)uN   Request HTTP/1.1 mentah lewat openssl s_client â†’ (status, headers, payload).zMozilla/5.0z*/*)ÚHostz
User-AgentÚAcceptNzContent-Lengthú z	 HTTP/1.1c                 ó"   — g | ]\  }}|› d |› �‘ŒS )ú: © )Ú.0r'   r(   s      r-   ú
<listcomp>zraw.<locals>.<listcomp>A   s&   € Ð,OÐ,OÐ,O¹T¸QÀ°¨[¨[°Q¨[¨[Ð,OÐ,OÐ,Or   zConnection: closer   z

r   r   ÚopensslÚs_clientz-quietz-connectz:443z-servername)ÚstdinÚstdoutÚstderr)Útimeoutzopenssl s_client timeoutg      ø?ztransport gagal zx r4   )ÚHOSTÚupdateÚstrÚlenÚitemsÚjoinÚencodeÚrangeÚtempfileÚTemporaryFileÚ
subprocessÚPopenÚPIPEÚcommunicateÚTimeoutExpiredÚkillr   r.   Ú	ExceptionÚtimeÚsleep)ÚmethodÚpathÚheadersÚbodyÚtriesr=   Úhr#   ÚreqÚlastÚattemptÚerrfÚpr*   r!   Úes                   r-   r   r   ;   s�  € å ]¸eÐDÐD€AØ‡H‚HˆWˆ]˜ÑÔÐØÐÝ!¥# d¡)¤)™nœnˆÐ
ÑØÐ(Ð(˜Ð(Ð(Ð(Ð)Ð,OÐ,OÀQÇWÂWÁYÄYÐ,OÑ,OÔ,OÑOÐSfÐRgÑg€EØ�;Š;�uÑÔ 
Ñ*×
2Ò
2Ñ
4Ô
4¸¸ÀÑ
D€Cà€DÝ˜˜E A™IÑ&Ô&ð &ñ &ˆð	&ÝÔ'Ñ)Ô)ð 	C¨TÝÔ$Ø 
¨H°jÅTÀ-À-À-ÐQ^Õ`dÐeÝ$œ/µ*´/È$ðPñ Pô P�ðCØŸ]š]¨3¸˜]Ñ@Ô@‘F�C˜˜øÝ!Ô0ð Cð Cð CØ—F’F‘H”H�HØ—M’M‘O”O�OÝ&Ð'AÑBÔBÐBðCøøøð ð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cõ ˜#‘;”;ÐÐÐøÝð 	&ð 	&ð 	&ØˆDÝŒJ�s˜W‘}Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ñ%øøøøð	&øøøõ ÐJ¨%ÐJÐJ°6ÐJÐJ¸DÐJÐJÀDÐJÐJÑ
KÔ
KÐKsV   Â8FÃAE?ÄD(Ä'E?Ä(AE/Å/E?Å3FÅ?F	ÆFÆF	ÆFÆ
G	Æ%GÇG	Túapplication/jsonc                 óæ   — |rddt           › �ini }|                     |pi ¦  «         d}|�|}||d<   n-|�+t          j        |¦  «                             ¦   «         }d|d<   t          | |||¦  «        S )zARequest REST WordPress. data = objek JSON, binary = bytes mentah.ÚAuthorizationúBasic NúContent-Typer]   )ÚAUTHr?   ÚjsonÚdumpsrD   r   )	rQ   rR   ÚdataÚextra_headersÚauthÚbinaryÚcontent_typerS   rT   s	            r-   r"   r"   X   s‘   € ð 59Ð@ˆ ­  Ð0Ð0¸b€GØ‡N‚N�=Ð& BÑ'Ô'Ð'Ø€DØÐØˆØ".ˆ�ÑÐØ	Ð	ÝŒz˜$ÑÔ×&Ò&Ñ(Ô(ˆØ"4ˆ�ÑÝˆv�t˜W dÑ+Ô+Ð+r   c                 ó¨   — t          | |fd|i|¤Ž\  }}}	 |t          j        |¦  «        fS # t          $ r ||                     dd¦  «        fcY S w xY w)uA   REST WordPress â†’ (status, objek JSON / teks kalau gagal parse).re   r   r   )r"   rc   ÚloadsrN   r   )rQ   rR   re   ÚkwÚstr%   Úpayloads          r-   Ú	rest_jsonro   g   sy   € å˜V TÐ;Ð;°Ð;¸Ð;Ð;Ñ€Bˆˆgð6Ø•4”:˜gÑ&Ô&Ð&Ð&øÝð 6ð 6ð 6Ø�7—>’> '¨9Ñ5Ô5Ð5Ð5Ð5Ð5ð6øøøs   –, ¬"AÁAc                 óX  — ddl }|j                             t          |¦  «        | dd¬¦  «                             ¦   «         }t          dddd	t          › �d
œ|¦  «        \  }}}|dk    rt          d|› d|dd…         ›�¦  «        ‚|j                             |¦  «        d         d         S )z4Panggil XML-RPC WordPress lewat transport yang sama.r   NTr   )Ú
methodnameÚ
allow_noneÚencodingÚPOSTz/xmlrpc.phpztext/xmlr`   )ra   r_   i�  zXML-RPC HTTP r4   i,  )	Úxmlrpc.clientÚclientrd   ÚtuplerD   r   rb   r   rk   )rQ   ÚparamsÚxmlrpcrn   rm   r!   rT   s          r-   Úxmlrpc_callrz   p   sÆ   € àÐÐÐØŒm×!Ò!¥%¨¡-¤-¸FØ-1¸Gð "ñ Eô EßEKÂVÁXÄXð å�f˜mØ'1ÀOÍTÀOÀOÐTÐTÐV]ñ_ô _�K€Bˆˆ4à	ˆS‚y€yÝÐ?¨2Ð?Ð?°°d°s°d´Ð?Ð?Ñ@Ô@Ð@ØŒ=×Ò˜tÑ$Ô$ QÔ'¨Ô*Ð*r   Ú__main__ÚGETzB/wp-json/wp/v2/posts?per_page=2&status=future&_fields=id,slug,datezstatus:F)Úensure_asciiiô  )NNTNr]   )N)#Ú__doc__Úbase64Úimportlib.utilÚ	importlibrc   rH   rF   rO   ÚWSÚutilÚspec_from_file_locationÚ_specÚmodule_from_specÚ_mÚloaderÚexec_moduleÚCFGr   r>   Ú	b64encoderD   r   rb   ÚTRIESÚTIMEOUTr.   r   r"   ro   rz   Ú__name__rm   re   Úprintrd   r5   r   r-   ú<module>r�      sü  ðð	ð 	ð €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€à6€ØŒ×.Ò.¨u¸Ð6HÐ6HÐ6HÑIÔI€Ø„^×$Ò$ UÑ+Ô+€Ø „× Ò ˜Ñ Ô Ð Ø„f€à%(¨¤]×%=Ò%=¸fÑ%EÔ%EÐX€v��H”ÑÐÈ3ÈxÌ=€Ø€vÔ˜3˜vœ;Ð6Ð6¨¨V¬Ð6Ð6×=Ò=Ñ?Ô?Ñ@Ô@×GÒGÑIÔI€Ø	€Ø
€ðð ð ð8 #¨°UÀGð Lð Lð Lð Lð: IMØ(ð,ð ,ð ,ð ,ð6ð 6ð 6ð 6ð	+ð 	+ð 	+ð ˆzÒÐØˆy˜Ð dÑeÔe�H€BˆØ	€Eˆ)�RÑÔÐØ	€Eˆ*ˆ$Œ*�T¨Ð
.Ñ
.Ô
.¨t°¨tÔ
4Ñ5Ô5Ð5Ð5Ð5ð Ðr   