Documentation for plugin loading in embedded mode (#422)

This commit is contained in:
pasccom 2020-08-14 13:50:19 +02:00 committed by GitHub
parent 505d316002
commit b21ad9e4aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 31 additions and 0 deletions

View File

@ -72,6 +72,7 @@ Table of Contents
* [Embed proxy.py](#embed-proxypy) * [Embed proxy.py](#embed-proxypy)
* [Blocking Mode](#blocking-mode) * [Blocking Mode](#blocking-mode)
* [Non-blocking Mode](#non-blocking-mode) * [Non-blocking Mode](#non-blocking-mode)
* [Loading Plugins](#loading-plugins)
* [Unit testing with proxy.py](#unit-testing-with-proxypy) * [Unit testing with proxy.py](#unit-testing-with-proxypy)
* [proxy.TestCase](#proxytestcase) * [proxy.TestCase](#proxytestcase)
* [Override Startup Flags](#override-startup-flags) * [Override Startup Flags](#override-startup-flags)
@ -1172,6 +1173,36 @@ Note that:
input arguments e.g. `start(['--port', '8899'])` or input arguments e.g. `start(['--port', '8899'])` or
by using passing flags as kwargs e.g. `start(port=8899)`. by using passing flags as kwargs e.g. `start(port=8899)`.
## Loading Plugins
You can, of course, list plugins to load in the input arguments list of `proxy.main`, `proxy.start` or the `Proxy` constructor. Use the `--plugins` flag as when starting from command line:
```python
import proxy
if __name__ == '__main__':
proxy.main([
'--plugins', 'proxy.plugin.CacheResponsesPlugin',
])
```
However, for simplicity you can pass the list of plugins to load as a keyword argument to `proxy.main`, `proxy.start` or the `Proxy` constructor:
```python
import proxy
from proxy.plugin import FilterByUpstreamHostPlugin
if __name__ == '__main__':
proxy.main([], plugins=[
b'proxy.plugin.CacheResponsesPlugin',
FilterByUpstreamHostPlugin,
])
```
Note that it supports:
1. The fully-qualified name of a class as `bytes`
2. Any `type` instance for a Proxy.py plugin class. This is espacially useful for custom plugins defined locally.
Unit testing with proxy.py Unit testing with proxy.py
========================== ==========================