Add an option to override the external URL scheme
This commit is contained in:
parent
b4a788826b
commit
eb2d9e5186
2 changed files with 21 additions and 2 deletions
|
@ -45,13 +45,15 @@ def main(ctx, database, log_level):
|
||||||
|
|
||||||
@main.command()
|
@main.command()
|
||||||
@click.option("--port", type=int, envvar="TUTOR_PORT", default=8888)
|
@click.option("--port", type=int, envvar="TUTOR_PORT", default=8888)
|
||||||
|
@click.option("--scheme", envvar="TUTOR_SCHEME")
|
||||||
@click.option("--static", envvar="TUTOR_STATIC", type=click.Path(file_okay=False))
|
@click.option("--static", envvar="TUTOR_STATIC", type=click.Path(file_okay=False))
|
||||||
@click.option("--debug", is_flag=True)
|
@click.option("--debug", is_flag=True)
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
def server(ctx, port, static, debug):
|
def server(ctx, port, scheme, static, debug):
|
||||||
app = tutor.server.make_app(
|
app = tutor.server.make_app(
|
||||||
{
|
{
|
||||||
**ctx.obj,
|
**ctx.obj,
|
||||||
|
"scheme": scheme,
|
||||||
"static": static,
|
"static": static,
|
||||||
"debug": debug,
|
"debug": debug,
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,10 +30,27 @@ def update_args(url: str, **qargs) -> str:
|
||||||
|
|
||||||
|
|
||||||
class SearchHandler(tornado.web.RequestHandler):
|
class SearchHandler(tornado.web.RequestHandler):
|
||||||
|
def url(self, url: str) -> str:
|
||||||
|
scheme_override = self.application.settings["scheme"]
|
||||||
|
if not scheme_override:
|
||||||
|
return url
|
||||||
|
parts = urllib.parse.urlsplit(url)
|
||||||
|
return urllib.parse.urlunsplit(
|
||||||
|
(
|
||||||
|
scheme_override,
|
||||||
|
parts.netloc,
|
||||||
|
parts.path,
|
||||||
|
parts.query,
|
||||||
|
parts.fragment,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def set_links(self, **links) -> None:
|
def set_links(self, **links) -> None:
|
||||||
self.set_header(
|
self.set_header(
|
||||||
"Link",
|
"Link",
|
||||||
", ".join([f'<{url}>; rel="{rel}"' for rel, url in links.items()]),
|
", ".join(
|
||||||
|
[f'<{self.url(url)}>; rel="{rel}"' for rel, url in links.items()]
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
async def get(self) -> None:
|
async def get(self) -> None:
|
||||||
|
|
Loading…
Reference in a new issue