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:
parent
55121195ce
commit
0b40a7badf
1
Pipfile
1
Pipfile
@ -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 = "*"
|
||||||
|
23
blackd.py
23
blackd.py
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user