Merge pull request #2221 from iharsh234/mypy-master-example/simple

Extend mypy example/simple (#2194)
This commit is contained in:
Aldo Cortesi 2017-04-29 23:19:11 +12:00 committed by GitHub
commit 83f8760703
13 changed files with 34 additions and 19 deletions

View File

@ -1,2 +1,5 @@
def response(flow):
from mitmproxy import http
def response(flow: http.HTTPFlow) -> None:
flow.response.headers["newheader"] = "foo"

View File

@ -1,5 +1,8 @@
from mitmproxy import http
class AddHeader:
def response(self, flow):
def response(self, flow: http.HTTPFlow) -> None:
flow.response.headers["newheader"] = "foo"

View File

@ -3,6 +3,7 @@ This example shows how one can add a custom contentview to mitmproxy.
The content view API is explained in the mitmproxy.contentviews module.
"""
from mitmproxy import contentviews
from typing import Tuple, Iterable, AnyStr, List
class ViewSwapCase(contentviews.View):
@ -13,7 +14,7 @@ class ViewSwapCase(contentviews.View):
prompt = ("swap case text", "z")
content_types = ["text/plain"]
def __call__(self, data: bytes, **metadata):
def __call__(self, data: bytes, **metadata) -> Tuple[str, Iterable[List[Tuple[str, AnyStr]]]]:
return "case-swapped text", contentviews.format_text(data.swapcase())

View File

@ -2,12 +2,12 @@
This scripts demonstrates how to use mitmproxy's filter pattern in scripts.
"""
from mitmproxy import flowfilter
from mitmproxy import ctx
from mitmproxy import ctx, http
class Filter:
def __init__(self):
self.filter = None
self.filter = None # type: flowfilter.TFilter
def configure(self, updated):
self.filter = flowfilter.parse(ctx.options.flowfilter)
@ -17,7 +17,7 @@ class Filter:
"flowfilter", str, "", "Check that flow matches filter."
)
def response(self, flow):
def response(self, flow: http.HTTPFlow) -> None:
if flowfilter.match(self.filter, flow):
print("Flow matches filter:")
print(flow)

View File

@ -8,6 +8,7 @@ from mitmproxy.exceptions import FlowReadException
import pprint
import sys
with open(sys.argv[1], "rb") as logfile:
freader = io.FlowReader(logfile)
pp = pprint.PrettyPrinter(indent=4)

View File

@ -7,18 +7,18 @@ to multiple files in parallel.
"""
import random
import sys
from mitmproxy import io
from mitmproxy import io, http
class Writer:
def __init__(self, path):
def __init__(self, path: str) -> None:
if path == "-":
f = sys.stdout
f = sys.stdout # type: io.TextIO
else:
f = open(path, "wb")
self.w = io.FlowWriter(f)
def response(self, flow):
def response(self, flow: http.HTTPFlow) -> None:
if random.choice([True, False]):
self.w.add(flow)

View File

@ -1,6 +1,6 @@
# (this script works best with --anticache)
from bs4 import BeautifulSoup
from mitmproxy import ctx
from mitmproxy import ctx, http
class Injector:
@ -9,7 +9,7 @@ class Injector:
"iframe", str, "", "IFrame to inject"
)
def response(self, flow):
def response(self, flow: http.HTTPFlow) -> None:
if ctx.options.iframe:
html = BeautifulSoup(flow.response.content, "html.parser")
if html.body:

View File

@ -1,4 +1,7 @@
def request(flow):
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
if flow.request.urlencoded_form:
# If there's already a form, one can just add items to the dict:
flow.request.urlencoded_form["mitmproxy"] = "rocks"

View File

@ -1,2 +1,5 @@
def request(flow):
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
flow.request.query["mitmproxy"] = "rocks"

View File

@ -1,9 +1,10 @@
"""
This example shows two ways to redirect flows to another server.
"""
from mitmproxy import http
def request(flow):
def request(flow: http.HTTPFlow) -> None:
# pretty_host takes the "Host" header of the request into account,
# which is useful in transparent mode where we usually only have the IP
# otherwise.

View File

@ -5,7 +5,7 @@ without sending any data to the remote server.
from mitmproxy import http
def request(flow):
def request(flow: http.HTTPFlow) -> None:
# pretty_url takes the "Host" header of the request into account, which
# is useful in transparent mode where we usually only have the IP otherwise.

View File

@ -2,11 +2,11 @@
This script rotates all images passing through the proxy by 180 degrees.
"""
import io
from PIL import Image
from mitmproxy import http
def response(flow):
def response(flow: http.HTTPFlow) -> None:
if flow.response.headers.get("content-type", "").startswith("image"):
s = io.BytesIO(flow.response.content)
img = Image.open(s).rotate(180)

View File

@ -10,7 +10,7 @@ app = Flask("proxapp")
@app.route('/')
def hello_world():
def hello_world() -> str:
return 'Hello World!'