o
    !i	                     @   sp   d dl m Z  d dlmZmZ d dlmZ dd Zdd d dZG dd	 d	eZ	G d
d deZ
G dd deZdS )    )time)uuid5NAMESPACE_URL)	urlencodec                 C   s   t dd |  D S )z#Remove all keys where value is Nonec                 s   s$    | ]\}}|d ur||fV  qd S N ).0kvr   r   X/var/www/html/crm_dreinet/venv_linux/lib/python3.10/site-packages/flask_restx/postman.py	<genexpr>
   s   " zclean.<locals>.<genexpr>)dictitems)datar   r   r   clean      r    )stringintegernumberc                   @   s\   e Zd ZdZdd Zedd Zedd Zedd	 Zed
d Z	dddZ
dddZdS )Requestz0Wraps a Swagger operation into a Postman Requestc                 C   s&   || _ || _|| _| | _|| _d S r   )
collectionpathparamsuppermethod	operation)selfr   r   r   r   r   r   r   r   __init__   s
   

zRequest.__init__c                 C   s(   t d| j| jf}t t| jj|S )N )strjoinr   urlr   r   uuid)r   seedr   r   r   id   s   z
Request.idc                 C   s   | j jjd| j S )N/)r   apibase_urlrstripr   r   r   r   r   r"   #   r   zRequest.urlc                 C   s
  i }| j dkr!| jjjdg }| jd|}t|r!|d |d< | jdg D ]}|d dkr:|dd	||d
 < q(| jjjdg D ]}| jj D ]\}}||v rXd	||< qLqD| jdg D ]}| jj D ]\}}||v rud	||< qiqadd | D }d	|S )NGETconsumeszContent-Type
parametersinheaderdefaultr   namesecurityc                 S   s   g | ]}d  |qS ):)r!   )r   liner   r   r   
<listcomp>@   s    z#Request.headers.<locals>.<listcomp>
)
r   r   r'   
__schema__getr   lenapikeysr   r!   )r   headersr,   paramr3   keyr0   linesr   r   r   r<   '   s0   

zRequest.headersc                 C   sT   d| j vst| j d dkrd S | j d d }| jjD ]}|j|kr'|j  S qd S )Ntagsr   )r   r:   r   folderstagr%   )r   rB   folderr   r   r   rC   C   s   

zRequest.folderFc                 C   sL   |  |\}}t| j| j| jd | jd|| j| jj| j|t	t
 d
S )NoperationIdsummary)
r%   r   r2   descriptionr"   r<   collectionIdrC   pathVariablesr   )process_urlr   r%   r   r   r9   r<   r   rC   intr   )r   urlvarsr"   	variablesr   r   r   as_dictL   s   
zRequest.as_dictc           	      C   s   | j }i }i }tdd | jD }|tdd | jdg D  |s(|d fS | D ]7\}}|d dkrK|d| d| }t|d	 d
||< q,|d dkrc|rct|d	 d
}|d|||< q,|rod	|t
|f}||fS )Nc                 s       | ]	}|d  |fV  qdS r2   Nr   r   pr   r   r   r   a       z&Request.process_url.<locals>.<genexpr>c                 s   rN   rO   r   rP   r   r   r   r   c   rR   r.   r/   r   z{%s}z:%styper   queryr1   ?)r"   r   r   updater   r9   r   replaceDEFAULT_VARSr!   r   )	r   rK   r"   	path_varsurl_varsr   r2   r=   r1   r   r   r   rI   ]   s(   zRequest.process_urlNF)__name__
__module____qualname____doc__r   propertyr%   r"   r<   rC   rM   rI   r   r   r   r   r      s    




r   c                   @   s4   e Zd Zdd Zedd Zedd Zdd Zd	S )
Folderc                 C   s   || _ |d | _|d | _d S )Nr2   rF   )r   rB   rF   )r   r   rB   r   r   r   r   t   s   
zFolder.__init__c                 C   s   t t| jjt | jS r   )r    r   r   r#   rB   r*   r   r   r   r%   y   s   z	Folder.idc                    s    fdd j jD S )Nc                    s   g | ]}|j  jkr|jqS r   rC   r%   r   rr*   r   r   r6      s    z Folder.order.<locals>.<listcomp>)r   requestsr*   r   r*   r   order}   r   zFolder.orderc                 C   s    t | j| j| j| j| jjdS )N)r%   r2   rF   rf   rG   )r   r%   rB   rF   rf   r   r*   r   r   r   rM      s   zFolder.as_dictN)r\   r]   r^   r   r`   r%   rf   rM   r   r   r   r   ra   s   s    

ra   c                   @   s`   e Zd ZdZdddZedd Zedd Zed	d
 Zedd Z	edd Z
dddZdS )PostmanCollectionV1z)Postman Collection (V1 format) serializerFc                 C   s   || _ || _d S r   )r'   swagger)r   r'   rh   r   r   r   r      s   
zPostmanCollectionV1.__init__c                 C   s   t t| jjS r   )r   r   r'   r(   r*   r   r   r   r#      s   zPostmanCollectionV1.uuidc                 C   s
   t | jS r   )r    r#   r*   r   r   r   r%      s   
zPostmanCollectionV1.idc                 c   sv    | j rt| di ddddV  | jjd  D ] \}}|dg }| D ]\}}|dkr7t| ||||V  q&qd S )Nz/swagger.jsonr9   zSwagger specificationsz&The API Swagger specifications as JSON)rD   rE   pathsr.   )rh   r   r'   r8   r   r9   )r   r   
operationspath_paramsr   r   r   r   r   re      s&   zPostmanCollectionV1.requestsc                 c   s$    | j jd D ]}t| |V  qd S )Nr@   )r'   r8   ra   )r   rB   r   r   r   rA      s   zPostmanCollectionV1.foldersc                 C   s    t dd | jjd D S )Nc                 s   s<    | ]\}}| d dkr| ddkr||d fV  qdS )r/   r0   rS   apiKeyr2   N)r9   )r   r2   secdefr   r   r   r      s    
z.PostmanCollectionV1.apikeys.<locals>.<genexpr>securityDefinitions)r   r'   r8   r9   r   r*   r   r   r   r;      s   zPostmanCollectionV1.apikeysc              	      s^   t | jd| jj| jjf| jjdd | jD  fdd| jD dd | jD t	t
 dS )Nr   c                 S   s   g | ]}|j s|jqS r   rb   rc   r   r   r   r6          z/PostmanCollectionV1.as_dict.<locals>.<listcomp>c                    s   g | ]}|j  d qS )rK   rM   rc   rp   r   r   r6      ro   c                 S   s   g | ]}|  qS r   rq   )r   fr   r   r   r6      s    )r%   r2   rF   rf   re   rA   	timestamp)r   r%   r!   r'   titleversionrF   re   rA   rJ   r   )r   rK   r   rp   r   rM      s   zPostmanCollectionV1.as_dictNr[   )r\   r]   r^   r_   r   r`   r#   r%   re   rA   r;   rM   r   r   r   r   rg      s    





rg   N)r   r#   r   r   urllib.parser   r   rX   objectr   ra   rg   r   r   r   r   <module>   s   _