B
    /b                 @   s   d dl mZ d dlZd dlZyd dlmZ W n  ek
rL   d dlmZ Y nX d dlm	Z	 d dl
mZ ddlmZ e	dd	Zejddd
d dd ZdddZdd ZG dd deZdd Zedkre  dS )    )print_functionN)HTTPResponse)OptionParser)closing   )
WarcRecordz%prog warc:offset)usageinfo)Zoutput_directorylimit	log_levelc             C   sl   t j| dd  d\}}|d dd\}}d|krPdd |ddD \}}nt|}d }t||| d S )Nr   )argsr   :,c             S   s   g | ]}t |qS  )int).0nr   r   5/usr/lib/python3.7/site-packages/hanzo/warcpayload.py
<listcomp>   s    zmain.<locals>.<listcomp>)parser
parse_argsrsplitsplitr   dump_payload_from_file)argvoptionsr   filenameoffsetlengthr   r   r   main   s    r   c          	   C   s*   t tj| d||d
}t|S Q R X d S )Nauto)r   gzipr   r   )r   r   Zopen_archivedump_payload_from_stream)r   r   r   fhr   r   r   r   "   s    r   c             C   s   yt jj}W n tk
r&   t j}Y nX x| jdddD ]\}}}|r|jtjkrr|j	drrt
|j}|  n|j}|d}x\|dkr|| |d}qW q8|r8tdt|r|ndf t jd	 x|D ]}td
| qW q8W d S )Nr   F)r
   offsetss   application/httpi        zwarc errors at %s:%dr   )file	)sysstdoutbufferAttributeErrorZread_recordstyper   ZRESPONSEcontent_type
startswithFileHTTPResponsecontent_filebeginreadwriteprintnamestderr)r#   outr   recorderrorsfbufer   r   r   r"   &   s&    





r"   c               @   s   e Zd ZdZdddZdS )r/   zXHTTPResponse subclass that reads from the supplied fileobj instead of
    from a socket.r   NFc             C   sR   || _ || _|| _|| _d  | _| _d| _d| _d| _d| _	d| _
d| _d| _d S )NUNKNOWN)fp
debuglevelstrict_methodheadersmsgversionstatusreasonchunked
chunk_leftr   
will_close)selffileobjr?   r@   method	bufferingr   r   r   __init__C   s    zFileHTTPResponse.__init__)r   r   NF)__name__
__module____qualname____doc__rN   r   r   r   r   r/   ?   s   r/   c               C   s   t tt j d S )N)r(   exitr   r   r   r   r   r   run[   s    rT   __main__)NN)
__future__r   osr(   http.clientr   ImportErrorhttpliboptparser   
contextlibr   Z	warctoolsr   r   set_defaultsr   r   r"   r/   rT   rO   r   r   r   r   <module>   s$   

