]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Tue, 4 Jul 2023 16:42:21 +0000 (18:42 +0200)
committerRoland Häder <roland@mxchange.org>
Tue, 4 Jul 2023 16:43:50 +0000 (18:43 +0200)
- rewrote to fetch domain data over internal JSON API (seem to be not cached?)
- avoid local variable

daemon.py
fba/models/instances.py

index cdc6ef5229e64f8c6e4e35c8ba0728a82a52524f..89b288fc5216082a6bfd1f86afbe5dc4c0aa520a 100755 (executable)
--- a/daemon.py
+++ b/daemon.py
@@ -190,6 +190,23 @@ LIMIT ?", [
 
     return result
 
+@router.get(config.get("base_url") + "/api/domain.json", response_class=JSONResponse)
+def api_domain(domain: str):
+    # Tidy up domain name
+    domain = tidyup.domain(domain)
+
+    if not utils.is_domain_wanted(domain):
+        raise HTTPException(status_code=500, detail=f"domain='{domain}' is not wanted")
+
+    # Fetch domain data
+    database.cursor.execute("SELECT * FROM instances WHERE domain = ? LIMIT 1", [domain])
+    domain_data = database.cursor.fetchone()
+
+    if domain_data is None:
+        raise HTTPException(status_code=404, detail=f"domain='{domain}' not found")
+
+    return domain_data
+
 @router.get(config.get("base_url") + "/api/mutual.json", response_class=JSONResponse)
 def api_mutual(domains: list[str] = Query()):
     """Return 200 if federation is open between the two, 4xx otherwise"""
@@ -205,9 +222,8 @@ def api_mutual(domains: list[str] = Query()):
             "bw": "*." + domains[1],
         },
     )
-    response = database.cursor.fetchone()
 
-    if response is not None:
+    if database.cursor.fetchone() is not None:
         # Blocks found
         return JSONResponse(status_code=418, content={})
 
@@ -286,7 +302,6 @@ def top(request: Request, mode: str, value: str, amount: int = config.get("api_l
         raise HTTPException(status_code=500, detail=f"amount='{amount}' is to big")
 
     info = response.json()
-    response = None
     blocklist = list()
 
     if mode == "block_level" and not blocks.is_valid_level(value):
@@ -296,7 +311,7 @@ def top(request: Request, mode: str, value: str, amount: int = config.get("api_l
 
     response = requests.get(f"http://{config.get('host')}:{config.get('port')}{config.get('base_url')}/api/top.json?mode={mode}&value={value}&amount={amount}")
 
-    if response is not None:
+    if response is not None and response.ok:
         blocklist = response.json()
 
     found = 0
@@ -325,12 +340,11 @@ def rss(request: Request, domain: str):
     if not utils.is_domain_wanted(domain):
         raise HTTPException(status_code=500, detail=f"domain='{domain}' is not wanted")
 
-    # Fetch domain data
-    database.cursor.execute("SELECT * FROM instances WHERE domain = ? LIMIT 1", [domain])
-    domain_data = database.cursor.fetchone()
+    response = requests.get(f"http://{config.get('host')}:{config.get('port')}{config.get('base_url')}/api/domain.json?domain={domain}")
 
-    if domain_data is None:
-        raise HTTPException(status_code=404, detail=f"domain='{domain}' not found")
+    domain_data = dict()
+    if response is not None and response.ok:
+        domain_data = response.json()
 
     # Format timestamps
     format = config.get("timestamp_format")
index 1294a01a48effa3a85b8fb3e3c9bd71dabebe7e2..0c39953a4e64f7b5d3202a39b79e67500dd0c377 100644 (file)
@@ -126,6 +126,7 @@ def update_data(domain: str):
     fields.append(time.time())
 
     # For WHERE statement
+    logger.debug("Setting domain='%s' for WHERE statement ...", domain)
     fields.append(domain)
 
     logger.debug("sql_string='%s',fields()=%d", sql_string, len(fields))