a
    5ñ»j"  ã                   @   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©Zff_valueÚstring© r   r   r   úEE:\soccer\ml_env\Lib\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 )Ú	ProxyTypez¦Set 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é   Z	RESERVED1é   Ú
AUTODETECTé   ÚSYSTEMé   ÚUNSPECIFIEDc                 C   sv   t |tƒrd|v r|d }t|ƒ ¡ }t| ƒD ]4}t| |ƒ}t |tƒr.d|v r.|d |kr.|  S q.td|› �ƒ‚d S )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   Z
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+   r-   r"   r   r   r   Ú__set__?   s
    z_ProxyTypeDescriptor.__set__N)r   r   r	   r,   r.   r5   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d„ƒZ!dd„ Z#dd„ Z$dS )ÚProxyzMProxy contains information about proxy type and necessary proxy
    settings.FÚ Nr/   ÚftpProxyÚ	httpProxyÚnoProxyÚproxyAutoconfigUrlÚsslProxyÚ
socksProxyÚsocksUsernameÚsocksPasswordÚsocksVersionc                 C   s6  |�r2d|v r&|d r&t  |d ¡| _d|v r@|d r@|d | _d|v rZ|d rZ|d | _d|v rt|d rt|d | _d|v rŽ|d rŽ|d | _d|v r¨|d r¨|d | _d|v rÂ|d rÂ|d | _d|v rÜ|d rÜ|d | _	d	|v rö|d	 rö|d	 | _
d
|v �r|d
 �r|d
 | _d|v �r2|d �r2|d | _dS )zuCreates a new Proxy.

        :Args:
         - raw: raw proxy data. If None, default class values are used.
        r1   r8   r9   r:   r;   r<   r/   r=   r>   r?   r@   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,   î   s.    








zProxy.__init__c                 C   s   | j S )z"Returns proxy type as `ProxyType`.)r1   )r+   r   r   r   rA     s    zProxy.proxy_type)Úreturnc                 C   s   |   |¡ || _dS )zKSets proxy type.

        :Args:
         - value: The proxy type.
        N)r0   r1   )r+   r"   r   r   r   rA     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 (ú))r1   r   r   r3   )r+   Zcompatible_proxyr   r   r   r0     s    ÿz&Proxy._verify_proxy_type_compatibilityc                 C   s>   d| j d  ¡ i}g d¢}|D ]}t| |ƒ}|r|||< q|S )Nr1   r   )
r/   r8   r9   r;   r<   r:   r=   r>   r?   r@   )r1   Úlowerr   )r+   Z
proxy_capsÚproxiesÚproxyr$   r   r   r   Úto_capabilities!  s    

zProxy.to_capabilities)N)%r   r   r	   r
   r   r   r1   r/   r8   r9   r:   r;   r<   r=   r>   r?   r@   r'   r   rF   r   rB   rC   rD   r   rE   Z	ssl_proxyrG   rH   rI   rJ   r,   ÚpropertyrA   Úsetterr0   rQ   r   r   r   r   r6   G   s:   

	r6   N)r
   r   r   r'   r6   r   r   r   r   Ú<module>   s   