Add CORS support to blackd (#627)

See issue #622. Use aiohttp-cors to allow cross-origin requests to blackd,
and add a dependency on it to the pipfile.
This commit is contained in:
Tushar Chandra 2018-12-10 02:15:57 -06:00 committed by Zsolt Dollenstein
parent 55121195ce
commit 0b40a7badf
2 changed files with 23 additions and 1 deletions

View File

@ -10,6 +10,7 @@ click = ">=6.5"
appdirs = "*" appdirs = "*"
toml = ">=0.9.4" toml = ">=0.9.4"
black = {editable = true, path = ".", extras = ["d"]} black = {editable = true, path = ".", extras = ["d"]}
aiohttp-cors = "*"
[dev-packages] [dev-packages]
pre-commit = "*" pre-commit = "*"

View File

@ -4,6 +4,7 @@
import logging import logging
from aiohttp import web from aiohttp import web
import aiohttp_cors
import black import black
import click import click
@ -17,6 +18,15 @@
SKIP_NUMERIC_UNDERSCORE_NORMALIZATION_HEADER = "X-Skip-Numeric-Underscore-Normalization" SKIP_NUMERIC_UNDERSCORE_NORMALIZATION_HEADER = "X-Skip-Numeric-Underscore-Normalization"
FAST_OR_SAFE_HEADER = "X-Fast-Or-Safe" 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.command(context_settings={"help_option_names": ["-h", "--help"]})
@click.option( @click.option(
@ -35,7 +45,18 @@ def main(bind_host: str, bind_port: int) -> None:
def make_app() -> web.Application: def make_app() -> web.Application:
app = web.Application() app = web.Application()
executor = ProcessPoolExecutor() 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 return app