new: Pass interval (timestamp) for the TLDs lookup

pull/940/head
Raphaël Vinot 2024-09-24 17:15:09 +02:00
parent 54deae4783
commit 69c7b0ac00
1 changed files with 21 additions and 2 deletions

View File

@ -9,6 +9,7 @@ import json
import logging import logging
import logging.config import logging.config
from datetime import datetime
from io import BytesIO from io import BytesIO
from typing import Any from typing import Any
from uuid import uuid4 from uuid import uuid4
@ -838,12 +839,30 @@ class TLDCaptures(Resource): # type: ignore[misc]
@api.param('tld', 'Get captures with a specific TLD and their capture timestamp.') # type: ignore[misc] @api.param('tld', 'Get captures with a specific TLD and their capture timestamp.') # type: ignore[misc]
@api.param('urls_only', 'Returns recent URLs with that TLD, regardless the capture.') # type: ignore[misc] @api.param('urls_only', 'Returns recent URLs with that TLD, regardless the capture.') # type: ignore[misc]
@api.param('most_recent_capture', 'Timestamp of the most recent capture to check for a TLD (fallback to now)') # type: ignore[misc]
@api.param('oldest_capture', 'Timestamp of the oldest capture to check for a TLD (fallback to 5 days ago)') # type: ignore[misc]
def get(self) -> list[tuple[str, float]] | list[str]: def get(self) -> list[tuple[str, float]] | list[str]:
tld: str | None = request.args['tld'] if request.args.get('tld') else None tld: str | None = request.args['tld'] if request.args.get('tld') else None
urls_only: bool | None = True if request.args.get('urls_only') else None
if not tld: if not tld:
return list(get_indexing(flask_login.current_user).tlds) return list(get_indexing(flask_login.current_user).tlds)
recent_captures_with_tld = get_indexing(flask_login.current_user).get_captures_tld(tld)
urls_only: bool | None = True if request.args.get('urls_only') else None
most_recent_capture: datetime | None
oldest_capture: datetime | None = None
if _most_recent := request.args.get('most_recent_capture'):
try:
most_recent_capture = datetime.fromtimestamp(float(_most_recent))
except Exception:
most_recent_capture = None
else:
most_recent_capture = None
if _oldest := request.args.get('oldest_capture'):
try:
oldest_capture = datetime.fromtimestamp(float(_oldest))
except Exception:
oldest_capture = None
recent_captures_with_tld = get_indexing(flask_login.current_user).get_captures_tld(tld, most_recent_capture, oldest_capture)
if not recent_captures_with_tld: if not recent_captures_with_tld:
return [] return []
if not urls_only: if not urls_only: