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:
parent
7a828017d1
commit
709d2b1ea2
@ -5,6 +5,7 @@ omit =
|
||||
*.html
|
||||
*.js
|
||||
*.css
|
||||
setup.py
|
||||
|
||||
[report]
|
||||
exclude_lines =
|
||||
|
@ -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
|
||||
|
@ -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):
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user