+
    ºÔjU  ã                   ó¨  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RItRt]P                  P                  R] R24      t]P                  P                  ]4      t]P                  P                  ]4       ]P                   t]R,          P#                  R4      '       g   R]R,          ,           M]R,          t]P&                  ! ]R,           R]R	,           2P)                  4       4      P+                  4       t^t^ZtR
 tRR]]3R ltRR ltRR ltR t]R8X  d9   ]! RR4      w  tt ]!! R]4       ]!! ]PD                  ! ] RR7      R,          4       R# R# )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Ú:Úpassc                 ó„  € V P                  R 4      w  rpVP                  RR4      P                  R4      pV'       d   V^ ,          P                  R4      '       g   \	        RVR,           24      h\        V^ ,          P                  4       ^,          4      p/ pVR,           FN  pRV9   g   K  VP                  R^4      w  r‰V	P                  4       WhP                  4       P                  4       &   KP  	  VP                  R	R
4      P                  4       R8X  d‰   TRrº V
P                  R4      pV^ 8  d   Mh\        V
RV P                  R4      ^ ,          ^4      pV^ 8X  d   M;WºV^,           V^,           V,            ,          pW¬^,           V,           ^,           R p
K‚  TpMRV9   d   VR\        VR,          4       pWVV3# )s   

úutf-8Úreplaceú
zHTTP/zheader HTTP tidak valid: :Né   N:r   NNr   ztransfer-encodingÚ Úchunkedó    s   
Nó   ;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€Eß˜˜a�×+Ñ+¨G×4Ò4ÜÐ6°u¸Rµy°kÐBÓCÐCÜ��q•—‘Ó! !Õ$Ó%€FØ€DØ�B�iˆiˆØ�"Ž9Ø—8‘8˜C Ó#‰DˆAØ&'§g¡g£iˆD—‘“—‘Ó"Ó#ñ ð ‡x�xÐ# RÓ(×.Ñ.Ó0°IÔ=Ø˜ˆSØØ—(‘(˜7Ó#ˆCØ�QŒwØÜ�s˜4˜C�y—‘ tÓ,¨QÕ/°Ó4ˆDØ�qŒyØØ�s˜Q•w˜s Q�w¨�~Ð.Õ.ˆCØ˜A•g •n qÕ(Ð)Ð*ŠCØ‰Ø	˜TÔ	!ØÐ0”S˜Ð.Õ/Ó0Ð1ˆØ˜ÐÐr   c                ó&  € R\         RRRR/pTP                  T;'       g    / 4       Ve   \        \        V4      4      VR&   V  RV R	2.VP	                  4        UUu. uF  w  rxV R
V 2NK  	  upp,           R.,           p	RP                  V	4      R,           P                  4       T;'       g    R,           p
Rp\        ^V^,           4       F”  p \        P                  ! 4       ;_uu_ 4       p\        P                  ! RRRR\          R2R\         .\        P                  \        P                  VR7      p VP                  W¥R7      w  pp RRR4       \#        X4      u # 	  \!        RV RV  RV R
V 24      hu uppi   \        P                   d-    TP                  4        TP                  4        \!        R4      hi ; i  + '       g   i     L€; i  \$         d,   pTp\&        P(                  ! RT,          4        Rp?EK=  Rp?ii ; i)uN   Request HTTP/1.1 mentah lewat openssl s_client â†’ (status, headers, payload).ÚHostz
User-AgentzMozilla/5.0ÚAcceptz*/*NzContent-LengthÚ z	 HTTP/1.1ú: zConnection: closer
   z

r   ÚopensslÚs_clientz-quietz-connectz:443z-servername)ÚstdinÚstdoutÚstderr)Útimeoutzopenssl s_client timeoutg      ø?ztransport gagal zx )ÚHOSTÚupdateÚstrÚlenÚitemsÚjoinÚencodeÚrangeÚtempfileÚTemporaryFileÚ
subprocessÚPopenÚPIPEÚcommunicateÚTimeoutExpiredÚkillr   r)   Ú	ExceptionÚtimeÚsleep)ÚmethodÚpathÚheadersÚbodyÚtriesr4   Úhr"   r#   r   ÚreqÚlastÚattemptÚerrfÚpr%   r   Úes   &&&&&&            r(   r   r   ;   sÕ  € à	”�| ]°H¸eÐD€AØ‡H�HˆW�]ˆ]˜ÔØÒÜ!¤# d£)›nˆÐ
ÑØˆx�q˜˜˜iÐ(Ð)ÀQÇWÁWÄYÔ,OÁY¹T¸Q°¨s°"°Q°C«[ÁYÒ,OÕOÐSfÐRgÕg€EØ�;‰;�uÓ 
Õ*×
2Ñ
2Ó
4¸¿¸ÀÕ
D€Cà€DÜ˜˜E A�IÖ&ˆð	&Ü×'Ò'×)Ô)¨TÜ×$Ò$Ø 
¨H°jÄTÀFÈ$À-ÐQ^Ô`dÐeÜ$Ÿ/™/´*·/±/È$ôP�ðCØŸ]™]¨3˜]Ó@‘F�C™÷ *ô ˜#“;Òñ 'ô  Ð)¨%¨°°6°(¸!¸D¸6ÀÀDÀ6ÐJÓ
KÐKùó) -Pøô "×0Ñ0ô CØ—F‘F”HØ—M‘M”OÜ&Ð'AÓBÐBðCú÷ *×)ûô ô 	&ØˆDÜ�JŠJ�s˜W•}×%Ó%ûð	&úsJ   ÁE=ÃGÃ/A	GÄ9FÅGÆAG	ÇGÇGÇGÇHÇ%HÈHc                óî   € V'       d   RR\          2/M/ pTP                  T;'       g    / 4       RpVe   TpWgR&   M-Ve*   \        P                  ! V4      P	                  4       pRVR&   \        WWx4      # )zARequest REST WordPress. data = objek JSON, binary = bytes mentah.ÚAuthorizationúBasic NúContent-Typeúapplication/json)ÚAUTHr6   ÚjsonÚdumpsr;   r   )	rH   rI   ÚdataÚextra_headersÚauthÚbinaryÚcontent_typerJ   rK   s	   &&&&&&&  r(   r   r   X   sx   € ÷ 59ˆ &¬¨ Ñ0¸b€GØ‡N�N�=×&Ð& BÔ'Ø€DØÒØˆØ".�ÒØ	Ò	Ü�zŠz˜$Ó×&Ñ&Ó(ˆØ"4ˆ�ÑÜˆv˜WÓ+Ð+r   c                óž   € \        W3RV/VB w  rEp V\        P                  ! V4      3#   \         d    YFP	                  RR4      3u # i ; i)uA   REST WordPress â†’ (status, objek JSON / teks kalau gagal parse).r\   r   r	   )r   rZ   ÚloadsrE   r   )rH   rI   r\   ÚkwÚstr    Úpayloads   &&&,   r(   Ú	rest_jsonrf   g   sW   € ä˜VÑ;°Ð;¸Ñ;Ñ€Bˆgð6Ø”4—:’:˜gÓ&Ð&Ð&øÜô 6Ø—>‘> '¨9Ó5Ð5Ò5ð6ús   “+ «AÁAc           	     ó@  € ^ RI pVP                  P                  \        V4      V RRR7      P	                  4       p\        RRRRR	R
\         2/V4      w  rEpVR8¼  d   \        RV RVR,          : 24      hVP                  P                  V4      ^ ,          ^ ,          # )z4Panggil XML-RPC WordPress lewat transport yang sama.NTr   )Ú
methodnameÚ
allow_noneÚencodingÚPOSTz/xmlrpc.phprW   ztext/xmlrU   rV   i�  zXML-RPC HTTP r.   :Ni,  N)	Úxmlrpc.clientÚclientr[   Útupler;   r   rY   r   rb   )rH   ÚparamsÚxmlrpcre   rd   r   rK   s   &&     r(   Úxmlrpc_callrq   p   s    € ãØ�m‰m×!Ñ!¤%¨£-¸FØ-1¸Gð "ó EßEKÁVÃXð ä�f˜mØ% z°?ÀfÌTÈFÀOÐTÐV]ó_�K€Bˆ4à	ˆS„yÜ˜]¨2¨$¨b°°dµ±Ð?Ó@Ð@Ø�=‰=×Ñ˜tÓ$ QÕ'¨Õ*Ð*r   Ú__main__ÚGETzB/wp-json/wp/v2/posts?per_page=2&status=future&_fields=id,slug,datezstatus:F)Úensure_ascii:Niô  N)NNTNrX   )N)#Ú__doc__Úbase64Úimportlib.utilÚ	importlibrZ   r?   r=   rF   ÚWSÚutilÚspec_from_file_locationÚ_specÚmodule_from_specÚ_mÚloaderÚexec_moduleÚCFGr   r5   Ú	b64encoder;   r   rY   ÚTRIESÚTIMEOUTr)   r   r   rf   rq   Ú__name__rd   r\   Úprintr[   © r   r(   Ú<module>rˆ      s=  ðñ	ó Û Û Û Û Û à6€Ø�‰×.Ñ.¨u¸¸¸KÐ6HÓI€Ø‡^�^×$Ñ$ UÓ+€Ø ‡�× Ñ ˜Ô Ø‡f�f€à%(¨¥]×%=Ñ%=¸f×%EÒ%E€v��H•ÖÈ3ÈxÍ=€Ø×Ò˜3˜v�;˜- q¨¨V­¨Ð6×=Ñ=Ó?Ó@×GÑGÓI€Ø	€Ø
€òð8 #¨°UÀGô Lô:,ô6ò	+ð ˆzÔÙ˜Ð dÓe�H€BˆÙ	ˆ)�RÔÙ	ˆ$�*Š*�T¨Ô
.¨tÕ
4Ö5ñ r   