]> git.mxchange.org Git - fba.git/blobdiff - fba/networks/peertube.py
Continued:
[fba.git] / fba / networks / peertube.py
index b9764c5104eb34cb21dfa0183395e57cb5eb6f23..758c8dda7adeb1b4f5cc36a3cdc4c6f55b965ff5 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+import logging
+
 from fba import csrf
 
 from fba.helpers import config
+from fba.helpers import domain as domain_helper
 
 from fba.http import network
 
 from fba.models import instances
 
+logging.basicConfig(level=logging.INFO)
+logger = logging.getLogger(__name__)
+
 def fetch_peers(domain: str) -> list:
-    # DEBUG: print(f"DEBUG: domain({len(domain)})='{domain}',software='peertube' - CALLED!")
-    if not isinstance(domain, str):
-        raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
-    elif domain == "":
-        raise ValueError("Parameter 'domain' is empty")
+    logger.debug("domain='%s' - CALLED!", domain)
+    domain_helper.raise_on(domain)
 
-    # DEBUG: print(f"DEBUG: domain='{domain}' is a PeerTube, fetching JSON ...")
+    logger.debug("domain='%s' is a PeerTube, fetching JSON ...", domain)
     peers   = list()
     start   = 0
 
@@ -37,15 +40,17 @@ def fetch_peers(domain: str) -> list:
     headers = tuple()
 
     try:
-        # DEBUG: print(f"DEBUG: Checking CSRF for domain='{domain}'")
+        logger.debug("Checking CSRF for domain='%s'", domain)
         headers = csrf.determine(domain, dict())
     except network.exceptions as exception:
-        print(f"WARNING: Exception '{type(exception)}' during checking CSRF (fetch_peers,{__name__}) - EXIT!")
+        logger.warning("Exception '%s' during checking CSRF (fetch_peers,%s)", type(exception), __name__)
         instances.set_last_error(domain, exception)
-        return peers
+
+        logger.debug("Returning empty list ... - EXIT!")
+        return list()
 
     for mode in ["followers", "following"]:
-        # DEBUG: print(f"DEBUG: domain='{domain}',mode='{mode}'")
+        logger.debug("domain='%s',mode='%s'", domain, mode)
         while True:
             data = network.get_json_api(
                 domain,
@@ -54,35 +59,35 @@ def fetch_peers(domain: str) -> list:
                 (config.get("connection_timeout"), config.get("read_timeout"))
             )
 
-            # DEBUG: print(f"DEBUG: data[]='{type(data)}'")
+            logger.debug("data[]='%s'", type(data))
             if "error_message" not in data:
-                # DEBUG: print(f"DEBUG: Success, data[json]()={len(data['json'])}")
+                logger.debug("Success, data[json]()=%d", len(data['json']))
+                instances.set_success(domain)
+
                 if "data" in data["json"]:
                     rows = data["json"]["data"]
 
-                    # DEBUG: print(f"DEBUG: Found {len(rows)} record(s).")
+                    logger.debug("Found %d record(s).", len(rows))
                     for record in rows:
-                        # DEBUG: print(f"DEBUG: record()={len(record)}")
-                        for mode2 in ["follower", "following" ]:
-                            # DEBUG: print(f"DEBUG: mode2='{mode2}'")
-                            if mode2 in record and "host" in record[mode2]:
-                                # DEBUG: print(f"DEBUG: Found host='{record[mode2]['host']}', adding ...")
+                        logger.debug("record()=%d", len(record))
+                        for mode2 in ["follower", "following"]:
+                            logger.debug("mode=%s,mode2='%s'", mode, mode2)
+                            if mode2 in record and "host" in record[mode2] and record[mode2]["host"] != domain:
+                                logger.debug("Found mode2='%s',host='%s', adding ...", mode2, record[mode2]['host'])
                                 peers.append(record[mode2]["host"])
-                            else:
-                                print(f"WARNING: record from '{domain}' has no '{mode2}' or 'host' record: {record}")
 
                     if len(rows) < 100:
-                        # DEBUG: print(f"DEBUG: Reached end of JSON response, domain='{domain}'")
+                        logger.debug("Reached end of JSON response, domain='%s'", domain)
                         break
+                else:
+                    logger.warning("domain='%s' has no 'data' element returned - SKIPPED!", domain)
+                    break
 
                 # Continue with next row
                 start = start + 100
             else:
-                print(f"WARNING: domain='{domain}' causes error during API query: '{data['error_message']}' - SKIPPED!")
+                logger.warning("domain='%s' causes error during API query: '%s' - SKIPPED!", domain, data['error_message'])
                 break
 
-    # DEBUG: print(f"DEBUG: Adding '{len(peers)}' for domain='{domain}'")
-    instances.set_total_peers(domain, peers)
-
-    # DEBUG: print(f"DEBUG: Returning peers[]='{type(peers)}'")
+    logger.debug("peers[%s]()=%d - EXIT!", type(peers), len(peers))
     return peers