Use url parameters instead of path

This commit is contained in:
2022-12-09 17:14:42 +01:00
parent 2a45573cd9
commit 6d028919b7
2 changed files with 22 additions and 2 deletions

View File

@ -27,6 +27,7 @@ Functions:
Runs on startup.
"""
import sys
import urllib.parse
from functools import cache
from typing import Any, Iterable
@ -48,6 +49,21 @@ app.mount("/static", StaticFiles(directory="static"), name="static")
templates: Jinja2Templates = Jinja2Templates(directory="templates")
def encode_url(url_to_quote: str) -> str:
"""%-escape the URL so it can be used in a URL. If we didn't do this, the URL could contain a ?
Args:
url_to_quote: The url to encode.
Returns:
The encoded url.
"""
return urllib.parse.quote(url_to_quote)
templates.env.filters["encode_url"] = encode_url
@app.post("/check", response_class=HTMLResponse)
def check_feed(request: Request, feed_url: str = Form()) -> _TemplateResponse:
"""Check all feeds"""
@ -120,7 +136,7 @@ def get_add(request: Request) -> _TemplateResponse:
return templates.TemplateResponse("add.html", context)
@app.get("/feed/{feed_url:path}", response_class=HTMLResponse)
@app.get("/feed/", response_class=HTMLResponse)
async def get_feed(feed_url: str, request: Request) -> _TemplateResponse:
"""
Get a feed by URL.
@ -132,6 +148,9 @@ async def get_feed(feed_url: str, request: Request) -> _TemplateResponse:
Returns:
HTMLResponse: The HTML response.
"""
# Make feed_url a valid URL.
feed_url = urllib.parse.unquote(feed_url)
feed: Feed = reader.get_feed(feed_url)
# Get entries from the feed.