From 709d2b1ea23862d1d5986126c2adf3b6647a33db Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 12 Mar 2016 23:29:23 -0800 Subject: [PATCH] reorg: move StreamIter to utils --- .coveragerc | 1 + recorder/recorderapp.py | 9 ++++----- webagg/responseloader.py | 41 +--------------------------------------- webagg/utils.py | 40 ++++++++++++++++++++++++++++++++++++++- 4 files changed, 45 insertions(+), 46 deletions(-) diff --git a/.coveragerc b/.coveragerc index 726c4a27..4b25f6fc 100644 --- a/.coveragerc +++ b/.coveragerc @@ -5,6 +5,7 @@ omit = *.html *.js *.css + setup.py [report] exclude_lines = diff --git a/recorder/recorderapp.py b/recorder/recorderapp.py index 3d968edd..eaec579b 100644 --- a/recorder/recorderapp.py +++ b/recorder/recorderapp.py @@ -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 diff --git a/webagg/responseloader.py b/webagg/responseloader.py index 52906301..4e7aeaf3 100644 --- a/webagg/responseloader.py +++ b/webagg/responseloader.py @@ -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): diff --git a/webagg/utils.py b/webagg/utils.py index 8913a443..e71357c7 100644 --- a/webagg/utils.py +++ b/webagg/utils.py @@ -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 +