ó
    Uu¢j|  ã                  óD  • % S r SSKJr  SSKJr  SSKJrJrJr  SSK	r	SSK
Jr  SSKJr  SSKJrJrJr  SS	KJrJr  SS
KJr  \ " S S5      5       r " S S\5      r " S S5      r " S S5      rSqS\S'   SSS jjrSS jrSS.S S jjr      S!S jr S"S jr!S#S jr"g)$z@Confluence page publisher (create design docs for Jira tickets).é    )Úannotations)Ú	dataclass)ÚListÚOptionalÚProtocolN)ÚDesignArtifact)ÚRequirementsArtifact)Úsynthesize_technical_documentÚtechnical_design_titleÚtechnical_document_storage_html)ÚSettingsÚget_settings)Úsanitize_textc                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg)ÚConfluencePageé   ÚstrÚidÚtitleÚurl© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    Ú8/var/www/html/gaurav/packages/integrations/confluence.pyr   r      s   ‡ àƒGØƒJØ	†Hr   r   c                  ó   • \ rS rSrSS jrSrg)ÚConfluencePublisheré   c              ƒ  ó   #   • g 7f©Nr   )ÚselfÚ	space_keyr   Úbody_storages       r   Úcreate_pageÚConfluencePublisher.create_page   s   é € Ðbeùs   ‚r   N©r&   r   r   r   r'   r   Úreturnr   )r   r   r   r   r(   r   r   r   r   r!   r!      s   † ßer   r!   c                  ó0   • \ rS rSrSrSSS jjrS	S jrSrg)
ÚMockConfluencePublisheré    z7In-memory Confluence publisher for local/dev and tests.c                óZ   • UR                  S5      U l        / U l        / U l        SU l        g )NÚ/iè  )ÚrstripÚbase_urlÚpagesÚcreatesÚ_next_id)r%   r2   s     r   Ú__init__Ú MockConfluencePublisher.__init__#   s'   € Ø Ÿ™¨Ó,ˆŒØ+-ˆŒ
Ø#%ˆŒØˆ�r   c              ƒ  ó<  #   • [        U R                  5      nU =R                  S-  sl        [        U5      =(       d    SnU R                   SU SU 3n[	        XEUS9nU R
                  R                  U5        U R                  R                  UUUUS.5        U$ 7f)Né   ÚUntitledz/spaces/z/pages/©r   r   r   )r&   r   r'   Úpage)r   r5   r   r2   r   r3   Úappendr4   )r%   r&   r   r'   Úpage_idÚ
safe_titler   r<   s           r   r(   Ú#MockConfluencePublisher.create_page)   s’   é € Ü�d—m‘mÓ$ˆØ�Š˜Ñ�Ü" 5Ó)×7¨Zˆ
Ø—‘�˜x¨	 {°'¸'¸ÐCˆÜ ÀÑDˆØ�
‰
×Ñ˜$ÔØ�‰×Ñà&Ø#Ø ,Øñ	ô	
ð ˆùs   ‚BB)r5   r2   r4   r3   N)z"https://example.atlassian.net/wiki)r2   r   r+   ÚNoner*   )r   r   r   r   Ú__doc__r6   r(   r   r   r   r   r-   r-       s   † ÙAö÷r   r-   c                  óH   • \ rS rSrSr  S     S	S jjrS
S jrSS jrSrg)ÚHttpConfluencePublisheré;   z3Create Confluence Cloud pages via REST content API.Nc                ó  • U=(       d
    [        5       U l        X l        U R                  R                  =(       d    U R                  R                  U R                  R
                  =(       d    U R                  R                  4U l        g r$   )r   ÚsettingsÚ	transportÚconfluence_emailÚ
jira_emailÚconfluence_api_tokenÚjira_api_tokenÚ_auth)r%   rG   rH   s      r   r6   Ú HttpConfluencePublisher.__init__>   sX   € ð
 !×2¤L£NˆŒØ"Œà�M‰M×*Ñ*×F¨d¯m©m×.FÑ.FØ�M‰M×.Ñ.×N°$·-±-×2NÑ2Nð
ˆ�
r   c              ƒ  óB  #   • S[        U5      =(       d    SSU0SUSS.0S.n[        R                  " SU R                  U R                  S9 IS h  v•N nUR                  U R                  S	5      US
9I S h  v•N nUR                  (       a;  [        U5      n[        R                  " SUR                   SU 3UR                  US9eUR                  5       nS S S 5      IS h  v•N   [        WR                  S5      =(       d    S5      n	[        [        UR                  S5      =(       d    U5      5      =(       d    Sn
[        U R                   R"                  X‰5      nU(       d  [%        S5      e['        XšUS9$  GN, GN Nž! , IS h  v•N  (       d  f       N³= f7f)Nr<   r:   ÚkeyÚstorage)ÚvalueÚrepresentation)Útyper   ÚspaceÚbodyg      >@)ÚtimeoutÚauthrH   z/rest/api/content)ÚjsonzConfluence create_page failed (z): )ÚrequestÚresponser   Ú r   z0Confluence create_page response missing page URLr;   )r   ÚhttpxÚAsyncClientrM   rH   ÚpostÚ_urlÚis_errorÚ_confluence_error_detailÚHTTPStatusErrorÚstatus_coderZ   rY   r   ÚgetÚ	_page_urlrG   Úconfluence_base_urlÚRuntimeErrorr   )r%   r&   r   r'   ÚpayloadÚclientÚrespÚdetailÚdatar>   Ú
page_titler   s               r   r(   Ú#HttpConfluencePublisher.create_pageJ   si  é € àÜ" 5Ó)×7¨ZØ˜YÐ'àØ)Ø&/ñðñ	

ˆô ×$Ò$ØØ—‘Ø—n‘n÷
ò 
ð ØŸ™ T§Y¡YÐ/BÓ%CÈ'˜ÐR×RˆDØ�}�}Ü1°$Ó7�Ü×+Ò+Ø5°d×6FÑ6FÐ5GÀsÈ6È(ÐSØ ŸL™LØ!ñð ð
 —9‘9“;ˆD÷
÷ 
ô �d—h‘h˜t“n×*¨Ó+ˆÜ"¤3 t§x¡x°Ó'8×'A¸EÓ#BÓC×QÀzˆ
Ü˜Ÿ™×9Ñ9¸4ÓIˆÞÜÐQÓRÐRÜ ÀÑDÐDò'
ò
 S÷
÷ 
÷ 
ð 
üs\   ‚AFÁE=ÁFÁ#FÁ8F Á9A FÃFÃ$FÃ%BFÆ FÆFÆFÆFÆFÆFc                óT   • U R                   R                  R                  S5       U 3$ )Nr0   )rG   rg   r1   )r%   Úpaths     r   r`   ÚHttpConfluencePublisher._urlk   s'   € Ø—-‘-×3Ñ3×:Ñ:¸3Ó?Ð@ÀÀÐGÐGr   )rM   rG   rH   )NN)rG   úOptional[Settings]rH   z"Optional[httpx.AsyncBaseTransport]r+   rA   r*   )rq   r   r+   r   )	r   r   r   r   rB   r6   r(   r`   r   r   r   r   rD   rD   ;   s;   † Ù=ð (,Ø8<ð

à$ð

ð 6ð

ð 
õ	

ôE÷BHr   rD   z!Optional[MockConfluencePublisher]Ú_mock_publisherc                óž   • U =(       d
    [        5       n U R                  S:X  a  [        U 5      $ [        c  [	        U R
                  S9q[        $ )NÚhttp)r2   )r   Úconfluence_providerrD   rt   r-   rg   )rG   s    r   Úget_confluence_publisherrx   r   sC   € Ø×)œ<›>€HØ×#Ñ# vÓ-Ü& xÓ0Ð0äÑÜ1¸8×;WÑ;WÑXˆÜÐr   c                 ó   • S q g r$   )rt   r   r   r   Úreset_mock_confluence_publisherrz   |   s   € à�Or   é´   )Úmax_lenc               ó°   • [        U=(       d    S5      R                  5       =(       d    Sn[        U =(       d    S5      R                  5       n[        X4US9$ )uC   Confluence page title: Technical Design â€” {feature} ({jira_key}).r\   ÚDesign)Újira_keyr|   )r   Ústripr   )r   Úsummaryr|   Úclean_summaryÚ	clean_keys        r   Údesign_doc_titler„   �   sB   € ä! '§-¨RÓ0×6Ñ6Ó8×D¸H€MÜ˜hŸn¨"Ó-×3Ñ3Ó5€IÜ! -ÈWÑUÐUr   c                óÄ   • [        X5      n[        UR                  =(       d    U R                  UR                  =(       d    U R                  5      Ul        [        U5      $ )zDBuild Confluence storage-format HTML as a technical design document.)r
   r„   r   r�   r   r   )ÚrequirementsÚdesignÚdocs      r   Údesign_doc_storage_htmlr‰   ˆ   sF   € ô
 (¨Ó
=€Cä  §¡×!I°L×4IÑ4IÈ6Ï>É>×KqÐ]i×]qÑ]qÓr€C„IÜ*¨3Ó/Ð/r   c                ó(  • UR                  S5      =(       d    0 nUR                  S5      nU(       aC  UR                  S5      (       d  UR                  S5      (       a  U$ U R                  S5       U 3$ U(       a  U R                  S5       SU 3$ g )NÚ_linksÚwebuizhttp://zhttps://r0   z/spaces/pages/)re   Ú
startswithr1   )r2   Úcontentr>   ÚlinksrŒ   s        r   rf   rf   “   s†   € Ø�K‰K˜Ó!×' R€EØ�I‰I�gÓ€EÞØ×Ñ˜I×&Ñ&¨%×*:Ñ*:¸:×*FÑ*FØˆLØ—/‘/ #Ó&Ð'¨ wÐ/Ð/ÞØ—/‘/ #Ó&Ð' ~°g°YÐ?Ð?Ør   c                ó–  •  U R                  5       nUR	                  S5      =(       d    UR	                  S5      =(       d    Sn[        U[        5      (       a  SU;   a  UR                  SS5      S   nUR	                  S	5      =(       d*    UR	                  S
0 5      R	                  S	5      =(       d    / nU(       a  U(       d  SR                  S U 5       5      nU=(       d(    U R                  =(       d    U R                  =(       d    SS S $ ! [         a.    U R                  =(       d    U R                  =(       d    SS S s $ f = f)Nzunknown erroriô  ÚmessageÚerrorMessager\   zBadRequestException: r9   éÿÿÿÿÚerrorsrm   z; c              3  ó6   #   • U H  n[        U5      v •  M     g 7fr$   )r   )Ú.0Úes     r   Ú	<genexpr>Ú+_confluence_error_detail.<locals>.<genexpr>©   s   é € Ð3©F qœC ŸF˜FªFùs   ‚)	rY   Ú	ExceptionÚtextÚreason_phrasere   Ú
isinstancer   ÚsplitÚjoin)rk   rm   r‘   r”   s       r   rb   rb   Ÿ   s  € ðJØ�y‰y‹{ˆð �h‰h�yÓ!×C T§X¡X¨nÓ%=×CÀ€GÜ�'œ3×ÑÐ$;¸wÓ$FØ—-‘-Ð 7¸Ó;¸BÑ?ˆØ�X‰X�hÓ×K 4§8¡8¨F°BÓ#7×#;Ñ#;¸HÓ#E×KÈ€FÞ–gØ—)‘)Ñ3©FÓ3Ó3ˆØ×I�t—y‘y×I D×$6Ñ$6×I¸/È4ÈCÐPÐPøô ó JØ—	‘	×B˜T×/Ñ/×B°?ÀDÀSÐIÒIðJús   ‚D Ä5EÅEr$   )rG   rs   r+   r!   )r+   rA   )r   r   r�   r   r|   Úintr+   r   )r†   r	   r‡   r   r+   r   )r2   r   rŽ   Údictr>   r   r+   zOptional[str])rk   zhttpx.Responser+   r   )#rB   Ú
__future__r   Údataclassesr   Útypingr   r   r   r]   Úpackages.artifacts.designr   Úpackages.artifacts.requirementsr	   Ú#packages.artifacts.technical_designr
   r   r   Úpackages.configr   r   Úpackages.integrations.sanitizer   r   r!   r-   rD   rt   r   rx   rz   r„   r‰   rf   rb   r   r   r   Ú<module>rª      s»   ðÚ Få "å !ß +Ñ +ã å 4Ý @÷ñ ÷
 3Ý 8ð ÷ð ó ðôf˜(ô f÷ñ ÷61Hñ 1Hðh 6:€Ð2Ó 9öôð
 EH÷ Vð0Ø&ð0àð0ð 	ô0ô	õQr   