From a0c2262d8b1d660218d43ab01eff199867e5d0aa Mon Sep 17 00:00:00 2001
From: Jeremy Whiting <jeremy.whiting@collabora.com>
Date: Tue, 29 Mar 2022 13:01:05 -0600
Subject: [PATCH] Add missing docstrings for each method and class.

Also fix some other minor things pylint caught.
---
 src/steamos-devkit-service.py | 37 ++++++++++++++++++++++++++++-------
 1 file changed, 30 insertions(+), 7 deletions(-)

diff --git a/src/steamos-devkit-service.py b/src/steamos-devkit-service.py
index 94da61e..b25877c 100644
--- a/src/steamos-devkit-service.py
+++ b/src/steamos-devkit-service.py
@@ -58,6 +58,8 @@ USE_DEFAULT_HOOKS = True
 
 
 def writefile(data: bytes) -> str:
+    """ Write given bytes to a temporary file and return the filename """
+
     # Get 1 from the resulting tuple, since that's the filename
     filename = tempfile.mkstemp(prefix="devkit-", dir="/tmp/", text=True)[1]
 
@@ -70,8 +72,10 @@ def writefile(data: bytes) -> str:
 
 
 def write_key(post_body: bytes) -> str:
-    # Write key to temp file and return filename if valid, etc.
-    # Return None if invalid
+    """ Write key to temp file and return filename if valid
+
+    Return None if invalid
+    """
     length = len(post_body)
     found_name = False
 
@@ -140,6 +144,10 @@ def write_key(post_body: bytes) -> str:
 
 
 def find_hook(name: str) -> str:
+    """ Find a hook with the given name
+
+    Return the path to the hook if found. '' if not found
+    """
     # First see if it exists in the given paths.
     for path in HOOK_DIRS:
         test_path = os.path.join(path, name)
@@ -175,12 +183,12 @@ identify_hook = find_hook("devkit-1-identify")
 if identify_hook:
     # Run hook and parse machine_name out
     process = subprocess.Popen(identify_hook, shell=False, stdout=subprocess.PIPE)
-    output = ''
+    OUTPUT = ''
     for line in process.stdout:
         textline = line.decode(encoding='utf-8', errors="ignore")
-        output += textline
+        OUTPUT += textline
     process.wait()
-    output_object = json.loads(output)
+    output_object = json.loads(OUTPUT)
     if 'machine_name' in output_object:
         MACHINE_NAME = output_object["machine_name"]
 
@@ -189,12 +197,16 @@ if not MACHINE_NAME:
 
 
 class DevkitHandler(BaseHTTPRequestHandler):
+    """ Class to handle http requests on selected port for registration, getting properties.
+    """
     def _send_headers(self, code, content_type):
         self.send_response(code)
         self.send_header("Content-type", content_type)
         self.end_headers()
 
     def do_GET(self):
+        """ Handle GET requests
+        """
         print(f"GET request to path {self.path} from {self.client_address[0]}")
 
         if self.path == "/login-name":
@@ -225,6 +237,8 @@ class DevkitHandler(BaseHTTPRequestHandler):
         self.wfile.write("Get works\n".encode())
 
     def do_POST(self):
+        """ Handle POST requests
+        """
         if self.path == "/register":
             from_ip = self.client_address[0]
             content_len = int(self.headers.get('Content-Length'))
@@ -297,6 +311,10 @@ class DevkitHandler(BaseHTTPRequestHandler):
 
 
 class DevkitService:
+    """ Class to run as service.
+
+    Parses configuration, creates handler, registers with avahi, etc.
+    """
     def __init__(self):
         global ENTRY_POINT_USER
         global DEVICE_USERS
@@ -312,10 +330,9 @@ class DevkitService:
         config = configparser.ConfigParser()
         # Use str form to preserve case
         config.optionxform = str
-        user_config_path = os.path.join(os.path.expanduser('~'), '.config', PACKAGE, PACKAGE + '.conf')
         config.read(["/etc/steamos-devkit/steamos-devkit.conf",
                      "/usr/share/steamos-devkit/steamos-devkit.conf",
-                     user_config_path])
+                     os.path.join(os.path.expanduser('~'), '.config', PACKAGE, PACKAGE + '.conf')])
 
         if 'Settings' in config:
             settings = config["Settings"]
@@ -355,6 +372,8 @@ class DevkitService:
         self.httpd.server_activate()
 
     def publish(self):
+        """ Publish ourselves on avahi mdns system as an available devkit device.
+        """
         bus = dbus.SystemBus()
         self.text = [f"{CURRENT_TXTVERS}".encode(),
                      f"settings={json.dumps(self.settings)}".encode(),
@@ -379,9 +398,13 @@ class DevkitService:
         self.group = avahi_object
 
     def unpublish(self):
+        """ Remove publishing of ourselves as devkit device since we are quitting.
+        """
         self.group.Reset()
 
     def run_server(self):
+        """ Run server until keyboard interrupt or we are killed
+        """
         try:
             self.httpd.serve_forever()
         except KeyboardInterrupt:
-- 
GitLab