X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/5c2dd96a69a935cf45acbdf2ffabbd39b27d38fa..9d749280bb1051991d391e0ee70174a613da16fc:/blackd.py diff --git a/blackd.py b/blackd.py index e1006a1..1a3b369 100644 --- a/blackd.py +++ b/blackd.py @@ -2,8 +2,10 @@ import asyncio from concurrent.futures import Executor, ProcessPoolExecutor from functools import partial import logging +from multiprocessing import freeze_support from aiohttp import web +import aiohttp_cors import black import click @@ -17,6 +19,15 @@ SKIP_STRING_NORMALIZATION_HEADER = "X-Skip-String-Normalization" SKIP_NUMERIC_UNDERSCORE_NORMALIZATION_HEADER = "X-Skip-Numeric-Underscore-Normalization" FAST_OR_SAFE_HEADER = "X-Fast-Or-Safe" +BLACK_HEADERS = [ + VERSION_HEADER, + LINE_LENGTH_HEADER, + PYTHON_VARIANT_HEADER, + SKIP_STRING_NORMALIZATION_HEADER, + SKIP_NUMERIC_UNDERSCORE_NORMALIZATION_HEADER, + FAST_OR_SAFE_HEADER, +] + @click.command(context_settings={"help_option_names": ["-h", "--help"]}) @click.option( @@ -35,7 +46,18 @@ def main(bind_host: str, bind_port: int) -> None: def make_app() -> web.Application: app = web.Application() executor = ProcessPoolExecutor() - app.add_routes([web.post("/", partial(handle, executor=executor))]) + + cors = aiohttp_cors.setup(app) + resource = cors.add(app.router.add_resource("/")) + cors.add( + resource.add_route("POST", partial(handle, executor=executor)), + { + "*": aiohttp_cors.ResourceOptions( + allow_headers=(*BLACK_HEADERS, "Content-Type"), expose_headers="*" + ) + }, + ) + return app @@ -109,6 +131,7 @@ async def handle(request: web.Request, executor: Executor) -> web.Response: def patched_main() -> None: + freeze_support() black.patch_click() main()