
    \c&                         d dl 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d dlZd dl	Z	ddl
mZ ddlmZ dZ G d dej        j        ej        j        ej        j                  Zd Zd
d	ZdS )    N   )_parse_date)convert_to_idnzapplication/atom+xml,application/rdf+xml,application/rss+xml,application/x-netcdf,application/xml;q=0.9,text/xml;q=0.2,*/*;q=0.1c                   0    e Zd Zd Zd ZeZeZeZeZd Z	dS )_FeedURLHandlerc                     ||_         |S N)status)selfreqfpcodemsgheaderss         1/usr/lib/python3/dist-packages/feedparser/http.pyhttp_error_defaultz"_FeedURLHandler.http_error_default0   s     		    c                     t           j        j                            | |||||          }|s|S ||_        |                                |_        |S r	   )urllibrequestHTTPRedirectHandlerhttp_error_301r
   geturlnewurl)r   r   r   r   r   hdrsresults          r   r   z_FeedURLHandler.http_error_3016   sO    3BB4bRVX[]abb 	Ir   c                 r   t           j                            |                                          d         }d|j        vsd|vr|                     |||||          S t          j        |j        d                             d          d         	                                          
                                }|                    d          \  }}	t          j        d|d                   d         }
|                     |
|||	           |                     d|||          }|                                  |S )	Nr   AuthorizationzWWW-Authenticate :zrealm="([^"]*)"r   zwww-authenticate)r   parseurlparseget_full_urlr   r   base64decodebytessplitencodedecoderefindalladd_passwordhttp_error_auth_reqedreset_retry_count)r   r   r   r   r   r   hostauthuserpasswrealmretrys               r   http_error_401z_FeedURLHandler.http_error_401F   s    |$$S%5%5%7%788;#+--1C71R1R**3D#wGGG!#+o">"D"DS"I"I!"L"S"S"U"UVV]]__jjooe
,g6H.IJJ1M%tU333**+=tS'RR   r   N)
__name__
__module____qualname__r   r   http_error_300http_error_302http_error_303http_error_307r4    r   r   r   r   /   sW             $N#N#N#N    r   r   c                 Z   t           j                            |           }|                    d|           |r|                    d|           t	          |t
                    rt          |          }n.t	          |t          j                  r|                                }|rag d}	g d}
|                    dd|	|d                  |d         |
|d	         d	z
           |d
         |d         |d         |d         fz             |r|                    d|           |                    dd           |r|                    dd|z             |r|                    d|           |	                                D ]\  }}|                    ||           |                    dd           |S )Nz
User-AgentzIf-None-Match)MonTueWedThuFriSatSun)JanFebMarAprMayJunJulAugSepOctNovDeczIf-Modified-Sincez#%s, %02d %s %04d %02d:%02d:%02d GMT      r   r            RefererzAccept-encodingzgzip, deflater   zBasic %sAcceptzA-IMfeed)
r   r   Request
add_header
isinstancestrr   datetimeutctimetupleitems)urlagentaccept_headeretagmodifiedreferrerr/   request_headersr   short_weekdaysmonthsheader_nameheader_values                r   _build_urllib2_requestrk   \   sS   n$$S))G|U+++ 2?D111(C   +x((	Hh/	0	0 +((** Q
 KJJeee.0UYghpqrhsYtv~  @A  wB  DJ  KS  TU  KV  YZ  KZ  D[  ]e  fg  ]h  jr  st  ju  w  @A  wB  DL  MN  DO  YP  1P  	Q  	Q  	Q 09h///(/::: ??J,=>>> 48]333 &5%:%:%<%< 6 6!\;5555vv&&&Nr   c           
      	   |g }nt          |t                    s|g}|i }|                     d          r| dd          } n"|                     d          rd| dd          z   } |sddlm} |}d }	|                     d          st
          j                            |           }
|
j        rt          |
          }|
j	        |d<   |
j
        r|
j	         d|
j
         |d<   t
          j                            |          } t          j        |
j         d|
j                                                                                   }	t          | t"                    st%          |           } g }| D ]o}	 |                    d	           |                    |           .# t(          $ r5 |                    t
          j                            |                     Y lw xY wd
                    |          } t/          | |t0          ||||	|          }t          j        j        t7          |t9                      gz              }g |_        |                    |          }|                                }|                                  d |j!        "                                D             |d<   |rd|d         #                    dd
          v r	 tI          j%        tM          j'        |                                                    }n# tP          tR          tT          j+        f$ r0}d|d<   ||d<   t          |tT          j+                  rd }Y d }~nd }~ww xY w|rd|d         #                    dd
          v rh	 tY          j-        |          }nR# tX          j+        $ r@ 	 tY          j-        |d          }n&# tX          j+        $ r}d|d<   ||d<   Y d }~nd }~ww xY wY nw xY wd|d         v rN|d         #                    dd
          }t          |t"                    r|                    dd          }|r||d<   d|d         v r5|d         #                    dd
          }|r||d<   t]          |          |d<   t          |j/        t"                    r|j/                            dd          |d<   n
|j/        |d<   ta          |dd           pd|d<   ta          |dd          d k    rd |d<   d
|d!<   d"|d#<   |S )$Nz	feed:httprU   zfeed:zhttp:r   )
USER_AGENTzftp:r    ascii c                 >    i | ]\  }}|                                 |S r<   )lower).0kvs      r   
<dictcomp>zget.<locals>.<dictcomp>   s&    DDD$!QADDDr   r   gzipzcontent-encoding)fileobjTbozobozo_exceptiondeflateirc   zutf-8ignorezlast-modifiedrd   modified_parsedhrefr
      r   r   i0  versionzkThe feed has not changed since you last checked, so the server sent no data.  This is a feature, not a bug!debug_message)1r[   list
startswithro   rm   r   r!   r"   usernamehostnameport
urlunparser$   standard_b64encodepasswordr'   r(   bytesr   appendUnicodeEncodeErrorquotejoinrk   ACCEPT_HEADERr   build_openertupler   
addheadersopenreadcloser   r_   getrv   GzipFileioBytesIOEOFErrorIOErrorstructerrorzlib
decompressr   r`   getattr)r`   rc   rd   ra   re   handlersrf   r   rm   r/   
url_pieces
new_piecesbitscr   openerfdataes                      r   r   r   |   sx   $'' : ~~k""  !""g		 	   ABB       D>>&!! o\**3//
 	oj))J&/JqM K#-#6 J J J J
1,))*55C,
0C-[-[jFY-[-[-b-b-d-deellnnD c5!! "S!! D  	HHW KKNNNN " 	/ 	/ 	/KK**1--.....	/ ''$--C %S%hPXZ^`oppG^(%O<M<M;N0N*O*OPFFGA6688DGGIII ED!)//2C2CDDDF9  -&+//0BBGGGG	=D)9)9:::??AADD'6<0 		 		 		 "F6N'(F#$!V\**  		 
 	-)vi0445GLLLL	-?4((DDz 	- 	- 	--tS11: - - -!%v+,'((((((-		- 	"""i $$VR00dE"" 	2;;w11D 	"!F6N&+++)$(("== 	>!)F:(3H(=(=F$%!% gx88vvq(D118SF8 q&!##xy#I Ksf   0F<GG9L M&M		M2N ON-,O-O<
OOOOO)NNNNNNN)r$   r]   rv   r   r)   r   urllib.parser   urllib.requestr   	datetimesr   urlsr   r   r   HTTPDigestAuthHandlerr   HTTPDefaultErrorHandlerr   rk   r   r<   r   r   <module>r      s  8    				 				           " " " " " "            
 S* * * * *fn:FN<^`f`n  aG * * *Z  @h h h h h hr   