Skip to content

Commit

Permalink
Add CORS support to blackd (#627)
Browse files Browse the repository at this point in the history
See issue #622. Use aiohttp-cors to allow cross-origin requests to blackd,
and add a dependency on it to the pipfile.
  • Loading branch information
tuchandra authored and zsol committed Dec 10, 2018
1 parent 5512119 commit 0b40a7b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
1 change: 1 addition & 0 deletions Pipfile
Expand Up @@ -10,6 +10,7 @@ click = ">=6.5"
appdirs = "*"
toml = ">=0.9.4"
black = {editable = true, path = ".", extras = ["d"]}
aiohttp-cors = "*"

[dev-packages]
pre-commit = "*"
Expand Down
23 changes: 22 additions & 1 deletion blackd.py
Expand Up @@ -4,6 +4,7 @@
import logging

from aiohttp import web
import aiohttp_cors
import black
import click

Expand All @@ -17,6 +18,15 @@
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(
Expand All @@ -35,7 +45,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


Expand Down

0 comments on commit 0b40a7b

Please sign in to comment.