1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-24 06:59:52 +01:00

reorg: move StreamIter to utils

This commit is contained in:
Ilya Kreymer 2016-03-12 23:29:23 -08:00
parent 7a828017d1
commit 709d2b1ea2
4 changed files with 45 additions and 46 deletions

View File

@ -5,6 +5,7 @@ omit =
*.html *.html
*.js *.js
*.css *.css
setup.py
[report] [report]
exclude_lines = exclude_lines =

View File

@ -1,9 +1,5 @@
#from gevent import monkey; monkey.patch_all() #from gevent import monkey; monkey.patch_all()
from requests.structures import CaseInsensitiveDict from webagg.utils import ReadFullyStream, StreamIter
import requests
from webagg.utils import ReadFullyStream
from webagg.responseloader import StreamIter
from webagg.inputrequest import DirectWSGIInputRequest from webagg.inputrequest import DirectWSGIInputRequest
from pywb.utils.statusandheaders import StatusAndHeadersParser from pywb.utils.statusandheaders import StatusAndHeadersParser
@ -19,6 +15,9 @@ import json
import tempfile import tempfile
import re import re
from requests.structures import CaseInsensitiveDict
import requests
import traceback import traceback
import gevent.queue import gevent.queue

View File

@ -1,4 +1,4 @@
from webagg.utils import MementoUtils from webagg.utils import MementoUtils, StreamIter
from pywb.utils.timeutils import timestamp_to_datetime, datetime_to_timestamp from pywb.utils.timeutils import timestamp_to_datetime, datetime_to_timestamp
from pywb.utils.timeutils import iso_date_to_datetime, datetime_to_iso_date from pywb.utils.timeutils import iso_date_to_datetime, datetime_to_iso_date
@ -17,45 +17,6 @@ import itertools
import requests import requests
#=============================================================================
class StreamIter(six.Iterator):
def __init__(self, stream, header1=None, header2=None, size=8192):
self.stream = stream
self.header1 = header1
self.header2 = header2
self.size = size
def __iter__(self):
return self
def __next__(self):
if self.header1:
header = self.header1
self.header1 = None
return header
elif self.header2:
header = self.header2
self.header2 = None
return header
data = self.stream.read(self.size)
if data:
return data
self.close()
raise StopIteration
def close(self):
if not self.stream:
return
try:
self.stream.close()
self.stream = None
except Exception:
pass
#============================================================================= #=============================================================================
class BaseLoader(object): class BaseLoader(object):
def __call__(self, cdx, params): def __call__(self, cdx, params):

View File

@ -145,7 +145,7 @@ def res_template(template, params):
return res return res
#================================================================= #=============================================================================
class ReadFullyStream(object): class ReadFullyStream(object):
def __init__(self, stream): def __init__(self, stream):
self.stream = stream self.stream = stream
@ -185,4 +185,42 @@ class ReadFullyStream(object):
self.stream.close() self.stream.close()
#=============================================================================
class StreamIter(six.Iterator):
def __init__(self, stream, header1=None, header2=None, size=8192):
self.stream = stream
self.header1 = header1
self.header2 = header2
self.size = size
def __iter__(self):
return self
def __next__(self):
if self.header1:
header = self.header1
self.header1 = None
return header
elif self.header2:
header = self.header2
self.header2 = None
return header
data = self.stream.read(self.size)
if data:
return data
self.close()
raise StopIteration
def close(self):
if not self.stream:
return
try:
self.stream.close()
self.stream = None
except Exception:
pass