diff --git a/data_backend.py b/data_backend.py index 19e4aed..d96a616 100644 --- a/data_backend.py +++ b/data_backend.py @@ -20,6 +20,7 @@ class DataBackend: self.user = user self.password = password + self.auth = (self.user, self.password) self.remote_root_dir = remote_root_dir self.server = server self.install_dir = install_dir @@ -92,6 +93,7 @@ class LocalFS(DataBackend): meta_info_list.append(software.Software(meta_file, self, self.progress_bar_wrapper)) return list(filter(lambda x: not x.invalid, meta_info_list)) + class HTTP(DataBackend): paths_listed = {} @@ -165,7 +167,7 @@ class HTTP(DataBackend): # this is with streaming chunk_size = 1024 * 1024 * 5 # 5MB - r = requests.get(self._get_url(), params={"path": path, "as_string": True}, stream=True) + r = requests.get(self._get_url(), params={"path": path, "as_string": True}, stream=True, auth=(self.user, self.password)) r.raise_for_status() if path.endswith(".txt"): @@ -197,7 +199,7 @@ class HTTP(DataBackend): else: print("Async Requested for:", local_file) - statekeeper.add_to_download_queue(self._get_url(), path) + statekeeper.add_to_download_queue(self._get_url(), path, auth=(self.user, self.password)) return local_file elif return_content: @@ -220,7 +222,7 @@ class HTTP(DataBackend): paths = self.paths_listed[fullpath] else: - r = requests.get(self._get_url(), params={ "path" : path }) + r = requests.get(self._get_url(), params={ "path" : path }, auth=(self.user, self.password)) r.raise_for_status() #print(r, r.status_code, r.content) paths = r.json()["contents"] @@ -273,4 +275,4 @@ class HTTP(DataBackend): print("Age limit set to", self.hide_above_age, "games have", [x.age_limit for x in software_list]) results_with_age = list(filter(lambda x: x.age_limit <= self.hide_above_age, results_valid)) - return results_with_age \ No newline at end of file + return results_with_age diff --git a/infowidget.py b/infowidget.py index 846950d..f13e9f1 100644 --- a/infowidget.py +++ b/infowidget.py @@ -86,7 +86,7 @@ class ProgressBarApp: return try: - percent_filled = statekeeper.get_percent_filled(path) + percent_filled = statekeeper.get_percent_filled(path, self.data_backend.auth) except OSError as e: fail_count += 1 if fail_count > 6: @@ -143,4 +143,4 @@ class ProgressBarApp: def on_close(self): self.running = False - self.root.destroy() \ No newline at end of file + self.root.destroy() diff --git a/statekeeper.py b/statekeeper.py index 143e5b9..cdc4a9b 100644 --- a/statekeeper.py +++ b/statekeeper.py @@ -8,10 +8,10 @@ from sqlalchemy import or_, and_ def _bytes_to_mb(size): return size / (1024*1024) -def add_to_download_queue(url, path): +def add_to_download_queue(url, path, auth): '''The download is added to the global queue and downloaded eventually''' #_download(url, path) - thread = threading.Thread(target=_download, args=(url, path)) + thread = threading.Thread(target=_download, args=(url, path, auth)) thread.start() def add_to_task_queue(task): @@ -21,9 +21,9 @@ def add_to_task_queue(task): thread.start() #task() -def _download(url, path): +def _download(url, path, auth): - response = requests.get(url + "?path=" + path, stream=True) + response = requests.get(url + "?path=" + path, stream=True, auth=auth) # Check if the request was successful if response.status_code == 200: @@ -72,7 +72,7 @@ def log_end_download(path): db.close_session() -def get_download_size(path): +def get_download_size(path, auth): session = db.session() obj = session.query(Download).filter(Download.path==path).first() @@ -85,7 +85,7 @@ def get_download_size(path): return obj.size # query size # - r = requests.get(obj.url, params={"path": path, "info": 1}) + r = requests.get(obj.url, params={"path": path, "info": 1}, auth=auth) r.raise_for_status() size = r.json()["size"] @@ -96,14 +96,14 @@ def get_download_size(path): return size -def get_percent_filled(path): +def get_percent_filled(path, auth): session = db.session() obj = session.query(Download).filter(Download.path==path, Download.finished==False).first() if not obj: return 100 # means its finished size = _bytes_to_mb(os.stat(obj.local_path).st_size) - total_size = get_download_size(obj.path) + total_size = get_download_size(obj.path, auth) session.close() if total_size == 0: @@ -122,4 +122,4 @@ def get_download(path=None): downloads = session.query(Download).filter(Download.finished==False).all() session.close() - return downloads \ No newline at end of file + return downloads