§
    žÿ°j:  ã                   óf  — d Z ddlZddlZddlZddlZdZdZdZdZdde	de	d	e
d
edef
d„Zdefd„Zdefde	de	d	e
d
edef
d„Zd de	de	de
defd„Zd!defd„Zedk    rV e¦   «           edd¦  «        Z ede                     d¦  «        d ee                     dg ¦  «        ¦  «        ¦  «         dS dS )"u-  Transport shim Repliz API via `openssl s_client` (Workaround 21 Sep 2026).

GEJALA: dari host ini TLS ke api.repliz.com GAGAL konsisten untuk curl & Python
urllib/ssl (`SSL: UNEXPECTED_EOF_WHILE_READING`, curl exit 35, node fetch failed)
â€” 0/6 sukses. Tapi handshake + HTTP/1.1 lewat `openssl s_client` CLI SUKSES
(5/6; 1x flake jaringan) dan server balas 200. Indikasi TLS-fingerprint/DPI:
middlebox nolak ClientHello curl/OpenSSL-library, tapi lolos ClientHello CLI.

Solusi: kirim request HTTP/1.1 mentah lewat stdio `openssl s_client -quiet`,
parse response manual, dengan retry (5 percobaan) untuk antisipasi flake.

Pakai:
    from repliz_openssl_transport import install, api_request
    install()            # monkeypatch ReplizClient._request â†’ transparan
    client.get_schedules(page=1, limit=100)
é    Nzapi.repliz.comi»  é   é<   ÚmethodÚpathÚheadersÚbodyÚreturnc           
      ó”  — | › d|› d�dt           › �g}|                     ¦   «         D ]\  }}|                     |› d|› �¦  «         Œ |�%|                     dt          |¦  «        › �¦  «         |                     d¦  «         d                     |¦  «        d	z                        ¦   «         |pd
z   }t          j        ¦   «         5 }t          j	        ddddt           › dt          › �dt           gt          j        t          j        |¬¦  «        }		 |	                     |t          ¬¦  «        \  }
}nM# t          j        $ r; |	                     ¦   «          |	                     ¦   «         \  }
}t!          d¦  «        ‚w xY w	 ddd¦  «         n# 1 swxY w Y   |
                     d¦  «        s t!          dt          |
¦  «        › d�¦  «        ‚|
S )zMSatu percobaan: kirim request lewat openssl s_client, balikin bytes response.ú z	 HTTP/1.1zHost: ú: NzContent-Length: zConnection: closeú
z

ó    ÚopensslÚs_clientz-quietz-connectú:z-servername)ÚstdinÚstdoutÚstderr)Útimeoutzopenssl s_client timeouts   HTTP/zresponse tidak valid (z bytes))ÚHOSTÚitemsÚappendÚlenÚjoinÚencodeÚtempfileÚTemporaryFileÚ
subprocessÚPopenÚPORTÚPIPEÚcommunicateÚTIMEOUTÚTimeoutExpiredÚkillÚRuntimeErrorÚ
startswith)r   r   r   r   ÚlinesÚkÚvÚreqÚerrfÚpÚoutÚ_s               úK/home/mantapman/.hermes/profiles/atun/workspace/repliz_openssl_transport.pyÚ	_http_rawr1      s  € àÐ(Ð(˜Ð(Ð(Ð(¨/µ4¨/¨/Ð:€EØ—’‘”ð "ð "‰ˆˆ1Ø�Š˜�[�[˜Q�[�[Ñ!Ô!Ð!Ð!ØÐØ�ŠÐ3­¨D©	¬	Ð3Ð3Ñ4Ô4Ð4Ø	‡L‚LÐ$Ñ%Ô%Ð%Ø�;Š;�uÑÔ 
Ñ*×
2Ò
2Ñ
4Ô
4¸¸ÀÑ
D€Cå	Ô	Ñ	!Ô	!ð 
; TÝÔØ˜
 H¨j½TÐ:JÐ:JÅDÐ:JÐ:JØ�Dð"å”/­*¬/À$ðHñ Hô Hˆð	;Ø—]’] 3µ�]Ñ8Ô8‰FˆC��øÝÔ(ð 	;ð 	;ð 	;Ø�FŠF‰HŒHˆHØ—]’]‘_”_‰FˆC�ÝÐ9Ñ:Ô:Ð:ð	;øøøð ð
;ð 
;ð 
;ñ 
;ô 
;ð 
;ð 
;ð 
;ð 
;ð 
;ð 
;øøøð 
;ð 
;ð 
;ð 
;ð �>Š>˜(Ñ#Ô#ð GÝÐEµC¸±H´HÐEÐEÐEÑFÔFÐFØ€Js,   ÃAFÄD.Ä-FÄ.A
E8Å8FÆFÆFÚrawc                 ó^  — |                       d¦  «        \  }}}|                     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 )uC   Parse raw HTTP/1.1 response â†’ (status, headers dict, body bytes).s   

úutf-8Úreplacer   r   é   Nr   ztransfer-encodingÚ Úchunkedr   Ts   
ó   ;é   é   zcontent-length)Ú	partitionÚdecodeÚsplitÚintÚstripÚlowerÚgetÚfind)r2   Úheadr/   Úrestr(   ÚstatusÚhdrsÚlnr)   r*   Úbufr.   ÚposÚsizes                 r0   Ú_parserL   7   sÁ  € à—M’M +Ñ.Ô.�M€Dˆ!ˆTØ�KŠK˜ Ñ+Ô+×1Ò1°&Ñ9Ô9€EÝ��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   Útriesc           
      ó  — d}t          d|dz   ¦  «        D ]\}	 t          t          | |||¦  «        ¦  «        \  }}}	|||	fc S # t          $ r#}
|
}t	          j        d|z  ¦  «         Y d}
~
ŒUd}
~
ww xY wt          d|› d| › d|› d|› �¦  «        ‚)uO   Request HTTP mentah lewat openssl s_client + retry â†’ (status, headers, body).Nr6   g      ø?zopenssl transport gagal zx r   r   )ÚrangerL   r1   Ú	ExceptionÚtimeÚsleepr&   )r   r   r   r   rM   ÚlastÚattemptrF   rG   ÚpayloadÚes              r0   Úraw_request_retryrW   R   sØ   € ð €DÝ˜˜E A™IÑ&Ô&ð &ð &ˆð	&Ý$*­9°V¸TÀ7ÈDÑ+QÔ+QÑ$RÔ$RÑ!ˆF�D˜'Ø˜4 Ð(Ð(Ð(Ð(øÝð 	&ð 	&ð 	&ØˆDÝŒJ�s˜W‘}Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%øøøøð	&øøøõ ÐR°%ÐRÐR¸6ÐRÐRÀDÐRÐRÈDÐRÐRÑ
SÔ
SÐSs   ™'AÁ
A0ÁA+Á+A0FÚendpointÚdatac                 ó†  — ddl m}m} |r&t          j        |¦  «                             ¦   «         nd}t          | |t          |¦  «        |¦  «        \  }}}	|dk    rddiS |dk    r3 |d|› d	| › d
|› d|	                     dd¦  «        dd…         › �¦  «        ‚|r|	                     ¦   «         S t          j	        |	¦  «        S )z?Request ke Repliz API lewat openssl transport. Return dict/str.r   )ÚHEADERSÚReplizErrorNéÌ   ÚsuccessTi�  zHTTP z on r   r   r4   r5   iô  )
Úrepliz_clientr[   r\   ÚjsonÚdumpsr   rW   Údictr=   Úloads)
r   rX   rY   r2   r[   r\   r   rF   r/   rU   s
             r0   Úapi_requestrd   `   s  € à2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø(,Ð6�4Œ:�dÑÔ×"Ò"Ñ$Ô$Ð$°$€DÝ*¨6°8½TÀ'¹]¼]ÈDÑQÔQÑ€FˆAˆwØ�‚}€}Ø˜4Ð Ð Ø�‚}€}Øˆkð H &ð Hð H¨fð Hð H°xð Hð HØ$Ÿ^š^¨G°YÑ?Ô?ÀÀÀÔEðHð Hñ Iô Ið 	Ià
ð  Ø�~Š~ÑÔÐÝŒ:�gÑÔÐr   TÚverbosec           	      ó¼   — ddl }ddt          dt          dt          dt          fd„}||j        _        | r(t          d	t          › d
t          › dt          › d�¦  «         |S )zJMonkeypatch ReplizClient._request supaya semua method pakai transport ini.r   NFr   rX   rY   r2   c                 ó&   — t          ||||¦  «        S ©N)rd   )Úselfr   rX   rY   r2   s        r0   Ú_requestzinstall.<locals>._requests   s   € Ý˜6 8¨T°3Ñ7Ô7Ð7r   u=   [transport] ReplizClient._request â†’ openssl s_client shim (r   z, z percobaan)©NF)
r_   Ústrrb   ÚboolÚReplizClientrj   Úprintr   r    ÚTRIES)re   Úrcrj   s      r0   Úinstallrr   o   sŸ   € àÐÐÐð8ð 8�sð 8­cð 8½ð 8Í4ð 8ð 8ð 8ð 8ð  (€B„OÔØð 5Ýð 4Ýð4ð 4Ýð4ð 4Ý!&ð4ð 4ð 4ñ 	5ô 	5ð 	5à€Ir   Ú__main__ÚGETz/public/schedule?page=1&limit=1z
totalDocs:Ú	totalDocsz| docs:Údocsrh   rk   )T)Ú__doc__r`   r   r   rQ   r   r    rp   r#   rl   rb   Úbytesr1   rL   r?   rW   rm   rd   rr   Ú__name__Úrro   rB   r   © r   r0   ú<module>r|      s»  ððð ð  €€€Ø Ð Ð Ð Ø €€€Ø €€€à€Ø
€Ø	€Ø
€ðð �cð  ð ¨tð ¸5ð ÈEð ð ð ð ð4�ð ð ð ð ð6 LPØ#(ðTð T˜cð T¨ð T°tð TÀ5ð TØ ðTð Tð Tð Tðð ˜ð  sð °$ð ÀDð ð ð ð ðð �Tð ð ð ð ð ˆzÒÐØ€G�I„I€IØˆ�EÐ<Ñ=Ô=€AØ	€Eˆ,˜Ÿš˜kÑ*Ô*¨I°s°s¸1¿5º5ÀÈÑ;LÔ;LÑ7MÔ7MÑNÔNÐNÐNÐNð Ðr   