B
    L]              	   @   s  d dl mZmZ d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
ZejjZd dlZd dlZd dlZd dlZd dlZeejdZejdddZegZedZyed	 W n ek
r   Y nX d
ejkred d dl Z d dl!Z!d dl"Z"G dd dZ#G dd dejZ$dd Z%e e!j&e% d dl'Z'd dl(Zd dlZdd Z)ej*+d	dZ,y4e-e,dZ.e/e.Z0W dQ R X ere!& e0_1W n$ e2e3fk
r   ej45 Z0Y nX x&eej*6dD ]Z7e)e0e7 qW dd Z8e8e0d e	j9ej*+d	dbZ:e$e:Z;e;<e0 ej*=e,r2e>e, e?e:j@e, ye:A  W n ek
rb   Y nX W dQ R X eBejCe0 G dd dejjDZEeBeE  ejjFe ZGddgeG_HejIeG G dd  d eJZKed!d" ZLd#d$ ZMdS )%    )closingcontextmanager)StringIONdispatchzhttp://127.0.0.1:4444zhttp://127.0.0.1:4445)httphttpsz[ 	]+tempZskipcookiesZispypyc               @   s   e Zd ZdS )DerpLockN)__name__
__module____qualname__ r   r   */home/creation/stories/code/setupurllib.pyr	   #   s    r	   c                   s0   e Zd Zdejf fdd	Zer(eee<   Z	S )	MyPicklerNc                s4   t |tjrt }|tjkr t}t ||| d S )N)
isinstance_threadRLockr	   supersave_global)selfobjnamepack)	__class__r   r   r   %   s
    
zMyPickler.save_global)
r
   r   r   structr   r   isPypyr   type__classcell__r   r   )r   r   r   $   s   r   c             C   s
   t jdfS )Nr   )r   r   )lockr   r   r   pickle_rlock-   s    r   c             C   s   t |d ttd}| }|d xx| D ]l}tj	
d|d |d d d|d |d d|d d|d d|d	 |d
 |d
 dkd d i }| | q8W W d Q R X d S )Nzmozilla_are_nazis.sqlitezASELECT host, path, isSecure, expiry, name, value FROM moz_cookiesr         F.          )shutilcopy2r   sqlite3connectcursorexecuteZfetchallr   	cookiejarCookie
startswith
set_cookie)cj
ff_cookiesZconcuritemcr   r   r   get_cookies6   s    

r6   zcookies.picklerbz#~/.mozilla/firefox/*/cookies.sqlitec             C   s   t j|sd S t|z}xr|D ]j}t|d\}}}}}}	}
tjd|	|
d d||	d|	d|d|dkt
||dkd d i }| | q W W d Q R X d S )N   r   Fr"   TRUEr&   )ospathexistsopenspacesplitr   r-   r.   r/   intr0   )r1   textinplinehostZ	isSessionr;   ZisSecureZexpiryr   valuer5   r   r   r   get_text_cookiesS   s     


rF   z/extra/user/tmp/cookies.txt)dirc               @   s(   e Zd ZG dd dejjZdd ZdS )HeaderWatcherc                   s   e Zd Z fddZ  ZS )zHeaderWatcher.Clientc                s   t  |||| d S )N)r   request)r   methodselectordataheaders)r   r   r   rI   p   s    zHeaderWatcher.Client.request)r
   r   r   rI   r   r   r   )r   r   Cliento   s   rN   c             C   s   |  | j|S )N)Zdo_openrN   )r   reqr   r   r   	http_openr   s    zHeaderWatcher.http_openN)r
   r   r   r   ZclientZHTTPConnectionrN   rP   r   r   r   r   rH   n   s   rH   )z
User-agentz'Mozilla/5.0 Gecko/20100101 Firefox/19.0)zAccept-Encodingzgzip,deflatec               @   s   e Zd Zdd ZdS )URLErrorc             C   s   t | jd t | jd  S )Nz: r   )str	__cause__args)r   r   r   r   __str__~   s    zURLError.__str__N)r
   r   r   rU   r   r   r   r   rQ   }   s   rQ   c          
   c   s  t | tst| } y| jd W nr tk
r } zTttj| j}x.t	dt
|D ]}tjj|| dd||< qVW tj|| _W d d }~X Y nX ytt| }|j}|d }|dkrtj|dd}nT|d	kr"|d
}yt|}W n( tjk
r   t|tj }Y nX t|}||_|V  W d Q R X W n tjjk
r } z*|jdkrvtd|j t|   W d d }~X Y n4 tjjk
r } zt| j|W d d }~X Y nX d S )Nasciir$   z/&=?+)safezContent-Encodinggzipr7   )fileobjmodedeflatei   i  head)r   RequestZfull_urlencodeUnicodeEncodeErrorlisturllibparseurlparserangelenquote
urlunparser   openerr=   rM   rX   ZGzipFilereadzlib
decompresserror	MAX_WBITSr   	HTTPErrorcodeprintrQ   )rI   eurlirB   rM   encodingrL   r   r   r   myopen   s>    
 

 ru   c          	   C   s&   t | }t|| |jS Q R X d S )N)ru   r'   copyfileobjrM   )rI   destrB   r   r   r   
myretrieve   s    
rx   )N
contextlibr   r   ior   rX   rj   sysr:   tempfileZurllib.requestra   rI   r]   pickler'   ZglobreZhttp.clientr   hasattrPicklerr   ProxyHandlerproxyZhandlerscompiler>   mkdirOSErrorenvironrp   copyregr   r   r	   r   r   r   r)   Zhttp.cookiejarr6   r;   joinZ
cookiefiler=   rB   loadZjarZ_cookies_lockIOErrorAttributeErrorr-   Z	CookieJar
expanduserr2   rF   NamedTemporaryFileoutZpicklerdumpr<   unlinkrenamer   closeappendHTTPCookieProcessorHTTPHandlerrH   build_openerrh   Z
addheadersinstall_opener	ExceptionrQ   ru   rx   r   r   r   r   <module>   s   

  	


  )