
    E6i	                         d dl m Z  d dlmZmZ d dlmZ d Zdd d dZ G d de      Z	 G d	 d
e      Z
 G d de      Zy)    )time)uuid5NAMESPACE_URL)	urlencodec                 B    t        d | j                         D              S )z#Remove all keys where value is Nonec              3   0   K   | ]  \  }}|	||f  y wN ).0kvs      V/home/azureuser/techstart-app/venv/lib/python3.12/site-packages/flask_restx/postman.py	<genexpr>zclean.<locals>.<genexpr>
   s     A41a1=AAs   
	)dictitems)datas    r   cleanr      s    A4::<AAA     )stringintegernumberc                   f    e Zd ZdZd Zed        Zed        Zed        Zed        Z	d
dZ
d
dZy	)Requestz0Wraps a Swagger operation into a Postman Requestc                 f    || _         || _        || _        |j                         | _        || _        y r	   )
collectionpathparamsuppermethod	operation)selfr   r   r   r    r!   s         r   __init__zRequest.__init__   s+    $	lln"r   c                     t        dj                  | j                  | j                  f            }t        t	        | j
                  j                  |            S )N )strjoinr    urlr   r   uuid)r"   seeds     r   idz
Request.id   s>    388T[[$((3455--t455r   c                 z    | j                   j                  j                  j                  d      | j                  z   S )N/)r   apibase_urlrstripr   r"   s    r   r(   zRequest.url#   s,    ""++2237$))CCr   c                 n   i }| j                   dk7  r_| j                  j                  j                  j	                  dg       }| j
                  j	                  d|      }t        |      r|d   |d<   | j
                  j	                  dg       D ]#  }|d   dk(  s|j	                  dd	      ||d
   <   % | j                  j                  j                  j	                  dg       D ]8  }| j                  j                  j                         D ]  \  }}||v sd	||<    : | j
                  j	                  dg       D ]8  }| j                  j                  j                         D ]  \  }}||v sd	||<    : |j                         D cg c]  }dj                  |       }}dj                  |      S c c}w )NGETconsumeszContent-Type
parametersinheaderdefaultr   namesecurity:
)
r    r   r.   
__schema__getr!   lenapikeysr   r'   )	r"   headersr4   paramr;   keyr8   lineliness	            r   rB   zRequest.headers'   s   ;;%**5599*bIH~~))*h?H8}*22,' ^^''b9 	BET{h&).9b)Af&	B
 ++66:::rJ 	)H#66<<> )V(?&(GFO)	) **:r: 	)H#66<<> )V(?&(GFO)	)
 -4MMO<D$<<yy =s   F2c                     d| j                   vst        | j                   d         dk(  ry | j                   d   d   }| j                  j                  D ]  }|j                  |k(  s|j
                  c S  y )Ntagsr   )r!   r@   r   folderstagr+   )r"   rJ   folders      r   rK   zRequest.folderC   sh    '3t~~f/E+F!+KnnV$Q'oo-- 	!FzzS yy 	!r   c                 <   | j                  |      \  }}t        | j                  | j                  | j                  d   | j                  j                  d      || j                  | j                  j                  | j                  |t        t                     d
      S )NoperationIdsummary)
r+   r    r:   descriptionr(   rB   collectionIdrK   pathVariablesr   )process_urlr   r+   r    r!   r?   rB   r   rK   intr   )r"   urlvarsr(   	variabless       r   as_dictzRequest.as_dictL   s~    ))'2Ygg++}5#~~11)<<< $ 2 2++!*DF
 	
r   c           	      >   | j                   }i }i }t        d | j                  D              }|j                  t        d | j                  j                  dg       D                     |s|d fS |j                         D ]|  \  }}|d   dk(  r5|j                  d|z  d|z        }t        j                  |d   d	      ||<   C|d   d
k(  sL|sOt        j                  |d   d	      }|j                  d|      ||<   ~ |rdj                  |t        |      f      }||fS )Nc              3   *   K   | ]  }|d    |f  ywr:   Nr
   r   ps     r   r   z&Request.process_url.<locals>.<genexpr>a   s     :qy!n:   c              3   *   K   | ]  }|d    |f  ywrY   r
   rZ   s     r   r   z&Request.process_url.<locals>.<genexpr>c   s     NA!F)QNr\   r6   r7   r   z{%s}z:%styper   queryr9   ?)r(   r   r   updater!   r?   r   replaceDEFAULT_VARSr'   r   )	r"   rT   r(   	path_varsurl_varsr   r:   rC   r9   s	            r   rR   zRequest.process_url]   s   hh	:dkk::N););L")MNN	
 9!<<> 	?KD%T{f$kk&4->"."2"25=""E	$t'G&**5="=!&9g!>	? ((C8!456CI~r   NF)__name__
__module____qualname____doc__r#   propertyr+   r(   rB   rK   rV   rR   r
   r   r   r   r      sf    :# 6 6 D D    6 ! !
"r   r   c                   8    e Zd Zd Zed        Zed        Zd Zy)Folderc                 :    || _         |d   | _        |d   | _        y )Nr:   rO   )r   rJ   rO   )r"   r   rJ   s      r   r#   zFolder.__init__t   s!    $v;}-r   c                 z    t        t        | j                  j                  t        | j                                    S r	   )r&   r   r   r)   rJ   r1   s    r   r+   z	Folder.idy   s&    5--s488}=>>r   c                     | j                   j                  D cg c](  }|j                  | j                  k(  s|j                  * c}S c c}w r	   )r   requestsrK   r+   )r"   rs     r   orderzFolder.order}   s3    "oo66N!((dgg:MNNNs
   A	A	c                     t        | j                  | j                  | j                  | j                  | j
                  j                  d      S )N)r+   r:   rO   rs   rP   )r   r+   rJ   rO   rs   r   r1   s    r   rV   zFolder.as_dict   s?    gg#// $ 2 2
 	
r   N)rg   rh   ri   r#   rk   r+   rs   rV   r
   r   r   rm   rm   s   s6    .
 ? ? O O	
r   rm   c                   p    e Zd ZdZd
dZed        Zed        Zed        Zed        Z	ed        Z
d
dZy	)PostmanCollectionV1z)Postman Collection (V1 format) serializerc                      || _         || _        y r	   )r.   swagger)r"   r.   rx   s      r   r#   zPostmanCollectionV1.__init__   s    r   c                 J    t        t        | j                  j                        S r	   )r   r   r.   r/   r1   s    r   r)   zPostmanCollectionV1.uuid   s    ]DHH$5$566r   c                 ,    t        | j                        S r	   )r&   r)   r1   s    r   r+   zPostmanCollectionV1.id   s    499~r   c           	   #   ,  K   | j                   rt        | di dddd       | j                  j                  d   j	                         D ]F  \  }}|j                  dg       }|j	                         D ]  \  }}|dk7  st        | ||||        H y w)Nz/swagger.jsonr?   zSwagger specificationsz&The API Swagger specifications as JSON)rM   rN   pathsr6   )rx   r   r.   r>   r   r?   )r"   r   
operationspath_paramsr    r!   s         r   rq   zPostmanCollectionV1.requests   s     <<#;G	 	 !% 3 3G < B B D 	ND*$..r:K%/%5%5%7 N!	\)!$k69MMN	Ns   A;B>Bc              #   d   K   | j                   j                  d   D ]  }t        | |        y w)NrH   )r.   r>   rm   )r"   rJ   s     r   rI   zPostmanCollectionV1.folders   s1     88&&v. 	$Cs##	$s   .0c                     t        d | j                  j                  j                  d      j	                         D              S )Nc              3      K   | ]6  \  }}|j                  d       dk(  r|j                  d      dk(  r	||d   f 8 yw)r7   r8   r^   apiKeyr:   N)r?   )r   r:   secdefs      r   r   z.PostmanCollectionV1.apikeys.<locals>.<genexpr>   sF      
fzz$8+

60Bh0N 6&>"
s   <>securityDefinitions)r   r.   r>   r?   r   r1   s    r   rA   zPostmanCollectionV1.apikeys   s;     
 $ 3 3 7 78M N T T V
 
 	
r   c                    t        | j                  dj                  | j                  j                  | j                  j
                  f      | j                  j                  | j                  D cg c]  }|j                  r|j                   c}| j                  D cg c]  }|j                  |       c}| j                  D cg c]  }|j                          c}t        t                     d      S c c}w c c}w c c}w )Nr%   )rT   )r+   r:   rO   rs   rq   rI   	timestamp)r   r+   r'   r.   titleversionrO   rq   rK   rV   rI   rS   r   )r"   rT   rr   fs       r   rV   zPostmanCollectionV1.as_dict   s    gg$((..$((2B2B!CD#xx33(,F1QXX!$$FAEOAQYYwY7O15>AAIIK> [

 
	

 GO>s   .C9 C9C>DNrf   )rg   rh   ri   rj   r#   rk   r)   r+   rq   rI   rA   rV   r
   r   r   rv   rv      su    3 7 7   N N* $ $ 
 

r   rv   N)r   r)   r   r   urllib.parser   r   rc   objectr   rm   rv   r
   r   r   <module>r      sM     % "B \f \~
V 
4=
& =
r   