B
     ¸hG(  ã               @   s4   d Z G dd„ dƒZG dd„ dƒZG dd„ deƒ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   r   ú\C:\Users\sanjo\AppData\Local\Qlobot\Launcher\ext_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   s€   t |tƒrd|kr|d }t|ƒ ¡ }xHt| ƒD ]<}t| |ƒ}t |tƒr0d|kr0|d d k	r0|d |kr0|S q0W td| ƒ‚d S )Nr   zNo proxy type is found for %s)Ú
isinstanceÚdictÚstrÚupperÚdirÚgetattrÚ	Exception)ÚclsÚvalueÚattrZ
attr_valuer   r   r   Úload2   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               @   sX  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)dd„Zedd„ ƒZejd	d„ ƒZed
d„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZedd „ ƒZejd!d „ ƒZed"d#„ ƒZejd$d#„ ƒZd%d&„ Zd'd(„ ZdS )*ÚProxyzS
    Proxy contains information about proxy type and necessary proxy settings.
    FÚ Nc             C   sL  |dk	rHd|kr.|d dk	r.t  |d ¡| _d|krL|d dk	rL|d | _d|krj|d dk	rj|d | _d|krˆ|d dk	rˆ|d | _d|kr¦|d dk	r¦|d | _d|krÄ|d dk	rÄ|d | _d|krâ|d dk	râ|d | _d	|kr|d	 dk	r|d	 | _	d
|kr&|d
 dk	r&|d
 | _
d|krH|d dk	rH|d | _dS )z~
        Creates a new Proxy.

        :Args:
         - raw: raw proxy data. If None, default class values are used.
        NÚ	proxyTypeÚftpProxyÚ	httpProxyÚnoProxyÚproxyAutoconfigUrlÚsslProxyÚ
autodetectÚ
socksProxyÚsocksUsernameÚsocksPassword)r   r$   Ú
proxy_typeÚ	ftp_proxyÚ
http_proxyÚno_proxyÚproxy_autoconfig_urlr-   Úauto_detectÚsocks_proxyÚsocks_usernameÚsocks_password)ÚselfÚrawr   r   r   Ú__init__Q   s*    








zProxy.__init__c             C   s   | j S )z4
        Returns proxy type as `ProxyType`.
        )r(   )r;   r   r   r   r2   n   s    zProxy.proxy_typec             C   s   |   |¡ || _dS )zT
        Sets proxy type.

        :Args:
         - value: The proxy type.
        N)Ú _verify_proxy_type_compatibilityr(   )r;   r"   r   r   r   r2   u   s    
c             C   s   | j S )z-
        Returns autodetect setting.
        )r.   )r;   r   r   r   r7   €   s    zProxy.auto_detectc             C   s<   t |tƒr0| j|k	r8|  tj¡ tj| _|| _ntdƒ‚dS )zb
        Sets autodetect setting.

        :Args:
         - value: The autodetect value.
        z,Autodetect proxy value needs to be a booleanN)r   Úboolr.   r>   r   r   r(   Ú
ValueError)r;   r"   r   r   r   r7   ‡   s    

c             C   s   | j S )z,
        Returns ftp proxy setting.
        )r)   )r;   r   r   r   r3   —   s    zProxy.ftp_proxyc             C   s   |   tj¡ tj| _|| _dS )z`
        Sets ftp proxy setting.

        :Args:
         - value: The ftp proxy value.
        N)r>   r   r   r(   r)   )r;   r"   r   r   r   r3   ž   s    c             C   s   | j S )z-
        Returns http proxy setting.
        )r*   )r;   r   r   r   r4   ª   s    zProxy.http_proxyc             C   s   |   tj¡ tj| _|| _dS )zb
        Sets http proxy setting.

        :Args:
         - value: The http proxy value.
        N)r>   r   r   r(   r*   )r;   r"   r   r   r   r4   ±   s    c             C   s   | j S )z*
        Returns noproxy setting.
        )r+   )r;   r   r   r   r5   ½   s    zProxy.no_proxyc             C   s   |   tj¡ tj| _|| _dS )z\
        Sets noproxy setting.

        :Args:
         - value: The noproxy value.
        N)r>   r   r   r(   r+   )r;   r"   r   r   r   r5   Ä   s    c             C   s   | j S )z7
        Returns proxy autoconfig url setting.
        )r,   )r;   r   r   r   r6   Ð   s    zProxy.proxy_autoconfig_urlc             C   s   |   tj¡ tj| _|| _dS )zv
        Sets proxy autoconfig url setting.

        :Args:
         - value: The proxy autoconfig url value.
        N)r>   r   r   r(   r,   )r;   r"   r   r   r   r6   ×   s    c             C   s   | j S )z.
        Returns https proxy setting.
        )r-   )r;   r   r   r   Ú	ssl_proxyã   s    zProxy.ssl_proxyc             C   s   |   tj¡ tj| _|| _dS )zd
        Sets https proxy setting.

        :Args:
         - value: The https proxy value.
        N)r>   r   r   r(   r-   )r;   r"   r   r   r   rA   ê   s    c             C   s   | j S )z.
        Returns socks proxy setting.
        )r/   )r;   r   r   r   r8   ö   s    zProxy.socks_proxyc             C   s   |   tj¡ tj| _|| _dS )zd
        Sets socks proxy setting.

        :Args:
         - value: The socks proxy value.
        N)r>   r   r   r(   r/   )r;   r"   r   r   r   r8   ý   s    c             C   s   | j S )z7
        Returns socks proxy username setting.
        )r0   )r;   r   r   r   r9   	  s    zProxy.socks_usernamec             C   s   |   tj¡ tj| _|| _dS )zv
        Sets socks proxy username setting.

        :Args:
         - value: The socks proxy username value.
        N)r>   r   r   r(   r0   )r;   r"   r   r   r   r9     s    c             C   s   | j S )z7
        Returns socks proxy password setting.
        )r1   )r;   r   r   r   r:     s    zProxy.socks_passwordc             C   s   |   tj¡ tj| _|| _dS )zv
        Sets socks proxy password setting.

        :Args:
         - value: The socks proxy password value.
        N)r>   r   r   r(   r1   )r;   r"   r   r   r   r:   #  s    c             C   s,   | j tjkr(| j |kr(td|| j f ƒ‚d S )NzC Specified proxy type (%s) not compatible with current setting (%s))r(   r   r   r    )r;   ZcompatibleProxyr   r   r   r>   /  s    z&Proxy._verify_proxy_type_compatibilityc             C   s®   i }| j d |d< | jr"| j|d< | jr2| j|d< | jrB| j|d< | jrR| j|d< | jrb| j|d< | jrr| j|d< | jr‚| j|d	< | jr’| j|d
< | j	r¢| j	|d< ||d< dS )z©
        Adds proxy information as capability in specified capabilities.

        :Args:
         - capabilities: The capabilities to which proxy will be added.
        r   r(   r.   r)   r*   r,   r-   r+   r/   r0   r1   ÚproxyN)
r(   r.   r)   r*   r,   r-   r+   r/   r0   r1   )r;   ÚcapabilitiesZ
proxy_capsr   r   r   Úadd_to_capabilities3  s*    








zProxy.add_to_capabilities)N)r   r   r	   r
   r   r   r(   r.   r)   r*   r+   r,   r-   r/   r0   r1   r=   Úpropertyr2   Úsetterr7   r3   r4   r5   r6   rA   r8   r9   r:   r>   rD   r   r   r   r   r&   A   sD   
r&   N)r
   r   r   Úobjectr&   r   r   r   r   Ú<module>   s   
 