3
5[              (   @   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jdddZegZejdZyejd	 W n ek
r   Y nX d
ejkrxe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 je!j&e% d dl'Z'd dl(Zdd Z)ej*j+d	dZ,y4e-e,dZ.ej/e.Z0W dQ R X ere!j& e0_1W n$ e2e3fk
r   ej4j5 Z0Y nX x&ejej*j6dD ]Z7e)e0e7 qW dd Z8e8e0d e	j9ej*j+d	dbZ:e$e:Z;e;j<e0 ej*j=e,r*ej>e, ej?e:j@e, ye:jA  W n ek
rZ   Y nX W dQ R X ejBejjCe0 G dd dejjDZEejBeE  ejjFe ZGd'd(geG_HejjIeG 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)httpZ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 j||| 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f fS )N)r   r   )lockr   r   r   pickle_rlock-   s    r   c             C   s   t tj|}|j }|jd xx|j D ]l}tjjd|d |d d d|d |d j	d|d j	d|d d|d |d	 |d	 d
kd d i }| j
| q,W W d Q R X d S )NzASELECT host, path, isSecure, expiry, name, value FROM moz_cookiesr         F.          )r   sqlite3ZconnectcursorexecuteZfetchallr   	cookiejarCookie
startswith
set_cookie)cj
ff_cookiesZconZcuritemcr   r   r   get_cookies6   s    

r1   zcookies.picklerbz#~/.mozilla/firefox/*/cookies.sqlitec             C   s   t jj|sd S t|z}xr|D ]j}tj|d\}}}}}}	}
tjjd|	|
d d||j	d|j	d|d|dkt
||dkd d i }| j| q W W d Q R X d S )N   r   Fr!   ZTRUEr%   )ospathexistsopenspacesplitr   r)   r*   r+   intr,   )r-   textinplinehostZ	isSessionr5   ZisSecureZexpiryr   valuer0   r   r   r   get_text_cookiesR   s     


r@   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  j|||| d S )N)r   request)r   methodselectordataheaders)r   r   r   rC   o   s    zHeaderWatcher.Client.request)r	   r
   r   rC   r   r   r   )r   r   Clientn   s   rH   c             C   s   | j | j|S )N)Zdo_openrH   )r   Zreqr   r   r   	http_openq   s    zHeaderWatcher.http_openN)r	   r
   r   r   ZclientZHTTPConnectionrH   rI   r   r   r   r   rB   m   s   rB   
User-agent'Mozilla/5.0 Gecko/20100101 Firefox/19.0Accept-Encoding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   rR   r   r   r   r   rN   |   s   rN   c          &   c   s  t | tst| } y| jjd W nr tk
r } zVttjj| j}x.t	dt
|D ]}tjj|| dd||< qVW tjj|| _W Y d d }~X nX yttj| }|j}|d }|dkrtj|dd}nT|d	kr"|jd
}ytj|}W n( tjk
r   tj|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|j   W Y d d }~X n4 tjjk
r } zt| j|W Y d d }~X nX d S )Nasciir#   z/&=?+)ZsafezContent-Encodinggzipr2   )fileobjmodeZdeflatei   i  head)r   RequestZfull_urlencodeUnicodeEncodeErrorlisturllibparseZurlparserangelenquoteZ
urlunparser   openerr7   rG   rT   ZGzipFilereadzlib
decompresserror	MAX_WBITSr   Z	HTTPErrorcodeprintrN   )rC   eZurlir<   rG   encodingrF   r   r   r   myopen   s>    
 

 rl   c          
   C   s&   t | }tj|| |jS Q R X d S )N)rl   shutilcopyfileobjrG   )rC   destr<   r   r   r   
myretrieve   s    
rp   )rJ   rK   )rL   rM   )N
contextlibr   r   ior   rT   rc   sysr4   tempfileZurllib.requestr\   rC   rX   picklerm   ZglobreZhttp.clientr   hasattrZPicklerr   ZProxyHandlerproxyZhandlerscompiler8   mkdirOSErrorenvironrh   copyregr   r   r   r   r   r   r&   Zhttp.cookiejarr1   r5   joinZ
cookiefiler7   r<   loadZjarZ_cookies_lockIOErrorAttributeErrorr)   Z	CookieJar
expanduserr.   r@   NamedTemporaryFileoutZpicklerdumpr6   unlinkrenamer   closeappendZHTTPCookieProcessorZHTTPHandlerrB   Zbuild_openerra   Z
addheadersZinstall_opener	ExceptionrN   rl   rp   r   r   r   r   <module>   s   

  	


  )