diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2019-01-03 19:34:17 +0100 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2019-01-03 19:37:27 +0100 |
commit | 9d7974e3e7e8a4575ea61cb33a30fa291d12ae38 (patch) | |
tree | 5311396c0d74eaa35e1eff1e1641c0bd157cde25 /crocoite/controller.py | |
parent | ad4e119bf1a55c84dc7c6260588ed7db9e7199c6 (diff) | |
download | crocoite-9d7974e3e7e8a4575ea61cb33a30fa291d12ae38.tar.gz crocoite-9d7974e3e7e8a4575ea61cb33a30fa291d12ae38.tar.bz2 crocoite-9d7974e3e7e8a4575ea61cb33a30fa291d12ae38.zip |
browser: Turn Item into RequestResponsePair
Previously Item was just a simple wrapper around Chrome’s Network.*
events. This turned out to be quite nasty when testing, so its
replacement, RequestResponsePair, does some level of abstraction. This
makes testing alot easier, since we now can simply instantiate it
without building a proper DevTools event.
Should come without any functional changes.
Diffstat (limited to 'crocoite/controller.py')
-rw-r--r-- | crocoite/controller.py | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/crocoite/controller.py b/crocoite/controller.py index 504fa23..a64a8dc 100644 --- a/crocoite/controller.py +++ b/crocoite/controller.py @@ -30,7 +30,7 @@ from operator import attrgetter from yarl import URL from . import behavior as cbehavior -from .browser import SiteLoader, Item +from .browser import SiteLoader, RequestResponsePair from .util import getFormattedViewportMetrics, getSoftwareInfo from .behavior import ExtractLinksEvent @@ -61,13 +61,13 @@ class StatsHandler (EventHandler): self.stats = {'requests': 0, 'finished': 0, 'failed': 0, 'bytesRcv': 0} def push (self, item): - if isinstance (item, Item): + if isinstance (item, RequestResponsePair): self.stats['requests'] += 1 - if item.failed: + if not item.response: self.stats['failed'] += 1 else: self.stats['finished'] += 1 - self.stats['bytesRcv'] += item.encodedDataLength + self.stats['bytesRcv'] += item.response.bytesReceived class LogHandler (EventHandler): """ Handle items by logging information about them """ @@ -126,7 +126,7 @@ class SinglePageController: async for item in l: self.processItem (item) - async with self.service as browser, SiteLoader (browser, self.url, logger=logger) as l: + async with self.service as browser, SiteLoader (browser, logger=logger) as l: handle = asyncio.ensure_future (processQueue ()) start = time.time () @@ -153,7 +153,7 @@ class SinglePageController: } self.processItem (ControllerStart (payload)) - await l.start () + await l.navigate (self.url) for b in enabledBehavior: async for item in b.onload (): self.processItem (item) |