X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/5f9eb9e4f7baa35cb87eb3f8a9fed81f1195a72e..9d749280bb1051991d391e0ee70174a613da16fc:/blackd.py diff --git a/blackd.py b/blackd.py index 50614d0..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 @@ -108,6 +130,11 @@ async def handle(request: web.Request, executor: Executor) -> web.Response: return web.Response(status=500, text=str(e)) -if __name__ == "__main__": +def patched_main() -> None: + freeze_support() black.patch_click() main() + + +if __name__ == "__main__": + patched_main()