aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/addonmanager.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@corte.si>2017-03-24 11:29:36 +1300
committerAldo Cortesi <aldo@corte.si>2017-03-25 10:48:12 +1300
commit65f0885bd6809966f694d1ffb965401b8ab2cffc (patch)
treeea90d5849f57d6b74ca0cefbb4498ff10776a848 /mitmproxy/addonmanager.py
parentd69a411303298c944d5941e0f3e435ff96800a69 (diff)
downloadmitmproxy-65f0885bd6809966f694d1ffb965401b8ab2cffc.tar.gz
mitmproxy-65f0885bd6809966f694d1ffb965401b8ab2cffc.tar.bz2
mitmproxy-65f0885bd6809966f694d1ffb965401b8ab2cffc.zip
addon loader: add boot_into, which replaces returning from start()
While we're here, expand test coverage for addonmanager to 100%, and promote to individual coverage.
Diffstat (limited to 'mitmproxy/addonmanager.py')
-rw-r--r--mitmproxy/addonmanager.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/mitmproxy/addonmanager.py b/mitmproxy/addonmanager.py
index 1fc8e4dc..241b3cde 100644
--- a/mitmproxy/addonmanager.py
+++ b/mitmproxy/addonmanager.py
@@ -17,6 +17,7 @@ class Loader:
"""
def __init__(self, master):
self.master = master
+ self.boot_into_addon = None
def add_option(
self,
@@ -34,6 +35,12 @@ class Loader:
choices
)
+ def boot_into(self, addon):
+ self.boot_into_addon = addon
+ func = getattr(addon, "load", None)
+ if func:
+ func(self)
+
class AddonManager:
def __init__(self, master):
@@ -65,11 +72,14 @@ class AddonManager:
"""
Add addons to the end of the chain, and run their startup events.
"""
- self.chain.extend(addons)
with self.master.handlecontext():
- l = Loader(self.master)
for i in addons:
+ l = Loader(self.master)
self.invoke_addon(i, "load", l)
+ if l.boot_into_addon:
+ self.chain.append(l.boot_into_addon)
+ else:
+ self.chain.append(i)
def remove(self, addon):
"""