use cvar for dprint

This commit is contained in:
Kay Faraday 2021-09-08 12:45:14 +00:00
parent f8eb3e9567
commit e1753f26cb
1 changed files with 9 additions and 7 deletions

View File

@ -32,12 +32,13 @@ def load_config():
return config return config
config = load_config() config = load_config()
dprint = build_dprint_factory(config.get('debug')) dprint_factory = build_dprint_factory(config.get('debug'))
dprint = ContextVar('dprint')
http = ContextVar('http') http = ContextVar('http')
async def handler(request): async def handler(request):
hconfig = config['hosts'][request.host] hconfig = config['hosts'][request.host]
print = dprint() dprint.set(dprint_factory())
async with http().request( async with http().request(
request.method, request.method,
# TODO support upstream unix sockets # TODO support upstream unix sockets
@ -48,7 +49,7 @@ async def handler(request):
# proxy redirects as-is # proxy redirects as-is
allow_redirects=False, allow_redirects=False,
) as upstream_resp: ) as upstream_resp:
print(request.method, request.host, request.path, '', hconfig['upstream']) dprint()(request.method, request.host, request.path, '', hconfig['upstream'])
headers = upstream_resp.headers.copy() headers = upstream_resp.headers.copy()
# we're not using gzip here so don't confuse our client # we're not using gzip here so don't confuse our client
with contextlib.suppress(KeyError): del headers['Content-Encoding'] with contextlib.suppress(KeyError): del headers['Content-Encoding']
@ -56,12 +57,12 @@ async def handler(request):
await resp.prepare(request) await resp.prepare(request)
if not hconfig['replace']: if not hconfig['replace']:
print('Not replacing for this host') dprint()('Not replacing for this host')
return await proxy_passthrough(upstream_resp, resp) return await proxy_passthrough(upstream_resp, resp)
for excluded_route in hconfig['excluded_routes']: for excluded_route in hconfig['excluded_routes']:
if request.path.startswith(excluded_route): if request.path.startswith(excluded_route):
print('Not replacing for', excluded_route) dprint()('Not replacing for', excluded_route)
return await proxy_passthrough(upstream_resp, resp) return await proxy_passthrough(upstream_resp, resp)
type, slash, subtype = upstream_resp.content_type.partition('/') type, slash, subtype = upstream_resp.content_type.partition('/')
@ -71,16 +72,17 @@ async def handler(request):
base_mime_type = type + slash + subtype.partition('+')[-1] base_mime_type = type + slash + subtype.partition('+')[-1]
if hconfig['mime_types'] and base_mime_type not in hconfig['mime_types']: if hconfig['mime_types'] and base_mime_type not in hconfig['mime_types']:
print('Not configured to replace for MIME type', upstream_resp.content_type) dprint()('Not configured to replace for MIME type', upstream_resp.content_type)
return await proxy_passthrough(upstream_resp, resp) return await proxy_passthrough(upstream_resp, resp)
print('replacing', repr(hconfig['pattern_decoded']), 'with', repr(hconfig['repl_decoded'])) dprint()('replacing', repr(hconfig['pattern_decoded']), 'with', repr(hconfig['repl_decoded']))
return await proxy_replace(hconfig, upstream_resp, resp) return await proxy_replace(hconfig, upstream_resp, resp)
async def proxy_replace(hconfig, upstream_resp, resp): async def proxy_replace(hconfig, upstream_resp, resp):
# iter_lines when # iter_lines when
while (line := await upstream_resp.content.readline()): while (line := await upstream_resp.content.readline()):
await resp.write(hconfig['pattern'].sub(hconfig['repl'], line)) await resp.write(hconfig['pattern'].sub(hconfig['repl'], line))
dprint()(repr(await upstream_resp.content.read()))
return await finalize_resp(resp) return await finalize_resp(resp)