o
    Rh"                     @   s@   d Z G dd dZG dd dZG dd dZG dd dZd	S )
zThe Proxy implementation.c                   @   s   e Zd ZdZedd ZdS )ProxyTypeFactoryzFactory for proxy types.c                 C   s
   | |dS )Nff_valuestring r   r   r   a/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/selenium/webdriver/common/proxy.pymake   s   
zProxyTypeFactory.makeN)__name__
__module____qualname____doc__staticmethodr   r   r   r   r   r      s    r   c                   @   sp   e Zd ZdZeddZeddZeddZedd	Z	ed
dZ
eddZeddZedd ZdS )	ProxyTypezSet of possible types of proxy.

    Each proxy type has 2 properties:    'ff_value' is value of Firefox
    profile preference,    'string' is id of proxy type.
        DIRECT   MANUAL   PAC   	RESERVED1   
AUTODETECT   SYSTEM   UNSPECIFIEDc                 C   sr   t |trd|v r|d }t| }t| D ]}t| |}t |tr1d|v r1|d |kr1|  S qtd| )Nr   zNo proxy type is found for )
isinstancedictstrupperdirgetattr	Exception)clsvalueattr
attr_valuer   r   r   load+   s   
zProxyType.loadN)r   r	   r
   r   r   r   r   r   r   
RESERVED_1r   r   r   classmethodr'   r   r   r   r   r      s    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_ProxyTypeDescriptorc                 C   s   || _ || _d S N)namep_type)selfr,   r-   r   r   r   __init__8   s   
z_ProxyTypeDescriptor.__init__c                 C   s   t || jS r+   )r!   r,   )r.   objr#   r   r   r   __get__<   s   z_ProxyTypeDescriptor.__get__c                 C   sL   | j dkrt|tstdt|d| j t|d| j t|| j | d S )N
autodetectz,Autodetect proxy value needs to be a boolean _verify_proxy_type_compatibility	proxyType)r,   r   bool
ValueErrorr!   r-   setattr)r.   r0   r$   r   r   r   __set__?   s
   z_ProxyTypeDescriptor.__set__N)r   r	   r
   r/   r1   r8   r   r   r   r   r*   7   s    r*   c                   @   s   e Zd ZdZejZdZdZdZ	dZ
dZdZdZdZdZdZedejZ	 edejZ	 edejZ	 edejZ	 ed	ejZ	 ed
ejZ	 edejZ	 edejZ	 edejZ	 edejZ	 dddZe dd Z!e!j"dddZ!dd Z#dd Z$dS )ProxyzMProxy contains information about proxy type and necessary proxy
    settings.F Nr2   ftpProxy	httpProxynoProxyproxyAutoconfigUrlsslProxy
socksProxysocksUsernamesocksPasswordsocksVersionc                 C   s8  |rd|v r|d rt |d | _d|v r|d r|d | _d|v r,|d r,|d | _d|v r9|d r9|d | _d|v rF|d rF|d | _d|v rS|d rS|d | _d|v r`|d r`|d | _d|v rm|d rm|d | _	d	|v rz|d	 rz|d	 | _
d
|v r|d
 r|d
 | _d|v r|d r|d | _dS dS dS dS )zuCreates a new Proxy.

        :Args:
         - raw: raw proxy data. If None, default class values are used.
        r4   r;   r<   r=   r>   r?   r2   r@   rA   rB   rC   N)r   r'   
proxy_type	ftp_proxy
http_proxyno_proxyproxy_autoconfig_urlr?   auto_detectsocks_proxysocks_usernamesocks_passwordsocks_version)r.   rawr   r   r   r/      s2   








zProxy.__init__c                 C   s   | j S )z"Returns proxy type as `ProxyType`.)r4   )r.   r   r   r   rD     s   zProxy.proxy_typereturnc                 C   s   |  | || _dS )zKSets proxy type.

        :Args:
         - value: The proxy type.
        N)r3   r4   )r.   r$   r   r   r   rD     s   

c                 C   s,   | j tj|fvrtd| d| j  dd S )NzSpecified proxy type (z') not compatible with current setting ())r4   r   r   r6   )r.   compatible_proxyr   r   r   r3     s
   z&Proxy._verify_proxy_type_compatibilityc                 C   s>   d| j d  i}g d}|D ]}t| |}|r|||< q|S )Nr4   r   )
r2   r;   r<   r>   r?   r=   r@   rA   rB   rC   )r4   lowerr!   )r.   
proxy_capsproxiesproxyr&   r   r   r   to_capabilities!  s   
zProxy.to_capabilitiesr+   )rO   N)%r   r	   r
   r   r   r   r4   r2   r;   r<   r=   r>   r?   r@   rA   rB   rC   r*   r   rI   r   rE   rF   rG   r   rH   	ssl_proxyrJ   rK   rL   rM   r/   propertyrD   setterr3   rV   r   r   r   r   r9   G   sP    

	r9   N)r   r   r   r*   r9   r   r   r   r   <module>   s
   