表示数に制限を設ける
This commit is contained in:
parent
24c23ef571
commit
de3fa6e392
2 changed files with 8 additions and 7 deletions
14
app.py
14
app.py
|
@ -133,9 +133,9 @@ def fastapi_serve(dir: str, ref: str, indexes: List[str] = ["index.html", "index
|
||||||
def get_ip(req: Request) -> str:
|
def get_ip(req: Request) -> str:
|
||||||
return req.headers.get("CF-Connecting-IP") or req.headers.get("X-Forwarded-For") or req.client.host
|
return req.headers.get("CF-Connecting-IP") or req.headers.get("X-Forwarded-For") or req.client.host
|
||||||
|
|
||||||
def get_litey_notes(id: str = None) -> List[dict]:
|
def get_litey_notes(id: str = None, limit: int = -1) -> List[dict]:
|
||||||
if not id:
|
if not id:
|
||||||
cursor = ctx["mongo_client"].litey.notes.find({}, { "_id": False }).sort("date", DESCENDING)
|
cursor = ctx["mongo_client"].litey.notes.find({}, { "_id": False }).sort("date", DESCENDING).limit(limit)
|
||||||
return list(cursor)
|
return list(cursor)
|
||||||
|
|
||||||
return ctx["mongo_client"].litey.notes.find_one({ "id": id }, { "_id": False })
|
return ctx["mongo_client"].litey.notes.find_one({ "id": id }, { "_id": False })
|
||||||
|
@ -164,13 +164,13 @@ async def cors_handler(req: Request, call_next: Callable[[Request], Awaitable[Re
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@app.get("/api/litey/get")
|
@app.get("/api/litey/get")
|
||||||
async def api_get(id: str = None):
|
async def api_get(id: str = None, limit: int = -1):
|
||||||
res = JSONResponse(get_litey_notes(id))
|
res = JSONResponse(get_litey_notes(id, limit))
|
||||||
res.headers["Cache-Control"] = f"public, max-age=60, s-maxage=60"
|
res.headers["Cache-Control"] = f"public, max-age=60, s-maxage=60"
|
||||||
res.headers["CDN-Cache-Control"] = f"max-age=60"
|
res.headers["CDN-Cache-Control"] = f"max-age=60"
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@app.post("/api/litey/post", dependencies=[Depends(RateLimiter(times=4, seconds=3600))])
|
@app.post("/api/litey/post")
|
||||||
async def api_post(item: LiteYItem, req: Request):
|
async def api_post(item: LiteYItem, req: Request):
|
||||||
ctx["mongo_client"].litey.notes.insert_one({
|
ctx["mongo_client"].litey.notes.insert_one({
|
||||||
"id": str(uuid4()),
|
"id": str(uuid4()),
|
||||||
|
@ -210,7 +210,7 @@ async def api_ng_get():
|
||||||
res.headers["CDN-Cache-Control"] = f"max-age=60"
|
res.headers["CDN-Cache-Control"] = f"max-age=60"
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@app.post("/api/ng/post", dependencies=[Depends(RateLimiter(times=1, seconds=86400))])
|
@app.post("/api/ng/post")
|
||||||
async def api_ng_post(item: NGItem):
|
async def api_ng_post(item: NGItem):
|
||||||
ctx["mongo_client"].litey.ngs.insert_one({
|
ctx["mongo_client"].litey.ngs.insert_one({
|
||||||
"word": item.word
|
"word": item.word
|
||||||
|
@ -229,7 +229,7 @@ async def api_ng_delete(item: NGItem):
|
||||||
@app.get("/")
|
@app.get("/")
|
||||||
async def home(req: Request):
|
async def home(req: Request):
|
||||||
res = ctx["templates"].TemplateResponse(req, "index.html", {
|
res = ctx["templates"].TemplateResponse(req, "index.html", {
|
||||||
"notes": get_litey_notes(),
|
"notes": get_litey_notes(limit=50),
|
||||||
"ng_words": get_ng_words()
|
"ng_words": get_ng_words()
|
||||||
})
|
})
|
||||||
res.headers["Cache-Control"] = f"public, max-age=60, s-maxage=60"
|
res.headers["Cache-Control"] = f"public, max-age=60, s-maxage=60"
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
<body>
|
<body>
|
||||||
<h1>掲示板へようこそ!</h1>
|
<h1>掲示板へようこそ!</h1>
|
||||||
<p>良識のあるメッセージを心がけてください</p>
|
<p>良識のあるメッセージを心がけてください</p>
|
||||||
|
<p>荒らしが横行しているため、最初の50件のみ表示しています。</p>
|
||||||
<textarea placeholder="ここにメッセージを入力" rows="4" cols="50" id="message"></textarea>
|
<textarea placeholder="ここにメッセージを入力" rows="4" cols="50" id="message"></textarea>
|
||||||
<input type="submit" value="今すぐ送信!" onclick="notePost();">
|
<input type="submit" value="今すぐ送信!" onclick="notePost();">
|
||||||
{% for note in notes %}
|
{% for note in notes %}
|
||||||
|
|
Loading…
Add table
Reference in a new issue