From 8a475f154a008db70c452d22bb0d278a31605b2d Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 5 Jan 2021 14:01:19 -0500 Subject: [PATCH] Improve Internal API System --- fHDHR/api/__init__.py | 28 ++++++++++++++++++++++++++++ fHDHR/cli/run.py | 2 +- fHDHR/device/epg/__init__.py | 9 ++------- fHDHR/device/tuners/tuner.py | 8 ++++---- fHDHR_web/api/startup_tasks.py | 8 ++++---- 5 files changed, 39 insertions(+), 16 deletions(-) diff --git a/fHDHR/api/__init__.py b/fHDHR/api/__init__.py index 432e74d..4996086 100644 --- a/fHDHR/api/__init__.py +++ b/fHDHR/api/__init__.py @@ -28,6 +28,34 @@ class fHDHR_API_URLs(): self.discovery_address = self.config.dict["fhdhr"]["discovery_address"] self.port = self.config.dict["fhdhr"]["port"] + def get(self, url, *args): + + req_method = type(self.client).__name__ + + if not url.startswith("http"): + if not url.startswith("/"): + url = "/%s" % url + url = "%s%s" % (self.base, url) + + if req_method == "FlaskClient": + self.client.get(url, headers=self.headers, *args) + else: + self.client.get(url, headers=self.headers, *args) + + def post(self, url, *args): + + req_method = type(self.client).__name__ + + if not url.startswith("http"): + if not url.startswith("/"): + url = "/%s" % url + url = "%s%s" % (self.base, url) + + if req_method == "FlaskClient": + self.client.post(url, headers=self.headers, *args) + else: + self.client.post(url, headers=self.headers, *args) + @property def base(self): if self.discovery_address: diff --git a/fHDHR/cli/run.py b/fHDHR/cli/run.py index b96fa28..423e4b2 100644 --- a/fHDHR/cli/run.py +++ b/fHDHR/cli/run.py @@ -55,7 +55,7 @@ def run(settings, logger, db, script_dir, fHDHR_web, origin, alternative_epg): # Perform some actions now that HTTP Server is running fhdhr.logger.info("Waiting 3 seconds to send startup tasks trigger.") time.sleep(3) - fhdhr.api.client.get("/api/startup_tasks", headers=fhdhr.api.headers) + fhdhr.api.get("/api/startup_tasks") # wait forever while True: diff --git a/fHDHR/device/epg/__init__.py b/fHDHR/device/epg/__init__.py index 4bf1274..54a97a7 100644 --- a/fHDHR/device/epg/__init__.py +++ b/fHDHR/device/epg/__init__.py @@ -37,7 +37,7 @@ class EPG(): if epg_method not in list(self.sleeptime.keys()): self.sleeptime[epg_method] = self.fhdhr.config.dict["epg"]["update_frequency"] - self.epg_update_url = "%s/api/epg?method=update" % (self.fhdhr.api.base) + self.epg_update_url = "/api/epg?method=update" def clear_epg_cache(self, method=None): @@ -301,12 +301,7 @@ class EPG(): elif time.time() >= (last_update_time + self.sleeptime[epg_method]): updatetheepg = True if updatetheepg: - try: - self.fhdhr.web.session.get("%s&source=%s" % (self.epg_update_url, epg_method), timeout=0.0000000001) - except self.fhdhr.web.exceptions.ReadTimeout: - pass - except self.fhdhr.web.exceptions.ConnectionError as e: - self.fhdhr.logger.error("Error updating %s EPG cache: %s" % (epg_method, e)) + self.fhdhr.api.get("%s&source=%s" % (self.epg_update_url, epg_method), timeout=0.0000000001) time.sleep(1800) except KeyboardInterrupt: pass diff --git a/fHDHR/device/tuners/tuner.py b/fHDHR/device/tuners/tuner.py index cf356fa..0855d5a 100644 --- a/fHDHR/device/tuners/tuner.py +++ b/fHDHR/device/tuners/tuner.py @@ -17,8 +17,8 @@ class Tuner(): self.tuner_lock = threading.Lock() self.set_off_status() - self.chanscan_url = "%s/api/channels?method=scan" % (self.fhdhr.api.base) - self.close_url = "%s/api/tuners?method=close&tuner=%s" % (self.fhdhr.api.base, str(self.number)) + self.chanscan_url = "%s/api/channels?method=scan" + self.close_url = "/api/tuners?method=close&tuner=%s" % str(self.number) def channel_scan(self, grabbed=False): if self.tuner_lock.locked() and not grabbed: @@ -38,10 +38,10 @@ class Tuner(): chanscan.start() def runscan(self): - self.fhdhr.api.client.get(self.chanscan_url) + self.fhdhr.api.get(self.chanscan_url) self.fhdhr.logger.info("Requested Channel Scan Complete.") self.close() - self.fhdhr.api.client.get(self.close_url) + self.fhdhr.api.get(self.close_url) def add_downloaded_size(self, bytes_count): if "downloaded" in list(self.status.keys()): diff --git a/fHDHR_web/api/startup_tasks.py b/fHDHR_web/api/startup_tasks.py index 41968c3..ef3a3ea 100644 --- a/fHDHR_web/api/startup_tasks.py +++ b/fHDHR_web/api/startup_tasks.py @@ -8,8 +8,8 @@ class Startup_Tasks(): def __init__(self, fhdhr): self.fhdhr = fhdhr - self.epg_update_url = "%s/api/epg?method=update" % (self.fhdhr.api.base) - self.channel_update_url = "%s/api/channels?method=scan" % (self.fhdhr.api.base) + self.epg_update_url = "/api/epg?method=update" + self.channel_update_url = "/api/channels?method=scan" def __call__(self, *args): return self.get(*args) @@ -25,10 +25,10 @@ class Startup_Tasks(): updatechannels = True if updatechannels: - self.fhdhr.api.client.get(self.channel_update_url, headers=self.fhdhr.api.headers) + self.fhdhr.api.get(self.channel_update_url) # Hit EPG Update API for epg_method in self.fhdhr.device.epg.epg_methods: - self.fhdhr.api.client.get("%s&source=%s" % (self.epg_update_url, epg_method), headers=self.fhdhr.api.headers) + self.fhdhr.api.get("%s&source=%s" % (self.epg_update_url, epg_method)) return "Success"