1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-15 08:04:49 +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
*.js
*.css
setup.py
[report]
exclude_lines =

View File

@ -1,9 +1,5 @@
#from gevent import monkey; monkey.patch_all()
from requests.structures import CaseInsensitiveDict
import requests
from webagg.utils import ReadFullyStream
from webagg.responseloader import StreamIter
from webagg.utils import ReadFullyStream, StreamIter
from webagg.inputrequest import DirectWSGIInputRequest
from pywb.utils.statusandheaders import StatusAndHeadersParser
@ -19,6 +15,9 @@ import json
import tempfile
import re
from requests.structures import CaseInsensitiveDict
import requests
import traceback
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 iso_date_to_datetime, datetime_to_iso_date
@ -17,45 +17,6 @@ import itertools
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):
def __call__(self, cdx, params):

View File

@ -145,7 +145,7 @@ def res_template(template, params):
return res
#=================================================================
#=============================================================================
class ReadFullyStream(object):
def __init__(self, stream):
self.stream = stream
@ -185,4 +185,42 @@ class ReadFullyStream(object):
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