1
0
mirror of https://github.com/fHDHR/fHDHR_NextPVR.git synced 2025-12-06 17:56:57 -05:00

Merge pull request #91 from deathbybandaid/dev

Implement internal client system
This commit is contained in:
Deathbybandaid 2020-12-16 10:40:39 -05:00 committed by GitHub
commit 1d595d8261
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 28 deletions

View File

@ -19,7 +19,7 @@ class fHDHR_INT_OBJ():
self.web = fHDHR.tools.WebReq() self.web = fHDHR.tools.WebReq()
self.api = fHDHR_API_URLs(settings) self.api = fHDHR_API_URLs(settings, self.web)
class fHDHR_OBJ(): class fHDHR_OBJ():

View File

@ -1,10 +1,26 @@
import urllib.parse import urllib.parse
class Fillin_Client():
def __init__(self, settings, web):
self.config = settings
self.web = web
def __getattr__(self, name):
''' will only get called for undefined attributes '''
if hasattr(self.web.session, name):
return eval("self.web.session." + name)
class fHDHR_API_URLs(): class fHDHR_API_URLs():
def __init__(self, settings): def __init__(self, settings, web):
self.config = settings self.config = settings
self.web = web
# Replaced later
self.client = Fillin_Client(settings, web)
self.address = self.config.dict["fhdhr"]["address"] self.address = self.config.dict["fhdhr"]["address"]
self.discovery_address = self.config.dict["fhdhr"]["discovery_address"] self.discovery_address = self.config.dict["fhdhr"]["discovery_address"]

View File

@ -70,17 +70,10 @@ def run(settings, logger, db, script_dir, fHDHR_web, origin, alternative_epg):
if settings.dict["main"]["thread_method"] in ["multiprocessing", "threading"]: if settings.dict["main"]["thread_method"] in ["multiprocessing", "threading"]:
fhdhr_epg.start() fhdhr_epg.start()
# Perform some actions now that HTTP Server is running, but don't wait for response # Perform some actions now that HTTP Server is running
# Hit EPG Update API URL without waiting
fhdhr.logger.info("Waiting 3 seconds to send startup tasks trigger.") fhdhr.logger.info("Waiting 3 seconds to send startup tasks trigger.")
time.sleep(3) time.sleep(3)
try: fhdhr.api.client.get("/api/startup_tasks")
fhdhr.web.session.get("%s/api/startup_tasks" % (fhdhr.api.base))
except fhdhr.web.exceptions.ReadTimeout:
pass
except fhdhr.web.exceptions.ConnectionError as e:
fhdhr.logger.warning("Startup tasks failed: %s" % e)
pass
# wait forever # wait forever
while True: while True:

View File

@ -134,3 +134,8 @@ class WebReq():
def __init__(self): def __init__(self):
self.session = requests.Session() self.session = requests.Session()
self.exceptions = requests.exceptions self.exceptions = requests.exceptions
def __getattr__(self, name):
''' will only get called for undefined attributes '''
if hasattr(self.session, name):
return eval("self.session." + name)

View File

@ -21,7 +21,9 @@ class fHDHR_HTTP_Server():
self.fhdhr.logger.info("Loading Flask.") self.fhdhr.logger.info("Loading Flask.")
self.app = Flask("fHDHR", template_folder=self.template_folder) self.fhdhr.app = Flask("fHDHR", template_folder=self.template_folder)
self.fhdhr.app.testing = True
self.fhdhr.api.client = self.fhdhr.app.test_client()
self.fhdhr.logger.info("Loading HTTP Pages Endpoints.") self.fhdhr.logger.info("Loading HTTP Pages Endpoints.")
self.pages = fHDHR_Pages(fhdhr) self.pages = fHDHR_Pages(fhdhr)
@ -47,9 +49,9 @@ class fHDHR_HTTP_Server():
self.origin_endpoints = self.fhdhr.originwrapper.origin.origin_web.fHDHR_Origin_Web(fhdhr) self.origin_endpoints = self.fhdhr.originwrapper.origin.origin_web.fHDHR_Origin_Web(fhdhr)
self.add_endpoints(self.origin_endpoints, "origin_endpoints") self.add_endpoints(self.origin_endpoints, "origin_endpoints")
self.app.before_request(self.before_request) self.fhdhr.app.before_request(self.before_request)
self.app.after_request(self.after_request) self.fhdhr.app.after_request(self.after_request)
self.app.before_first_request(self.before_first_request) self.fhdhr.app.before_first_request(self.before_first_request)
def before_first_request(self): def before_first_request(self):
self.fhdhr.logger.info("HTTP Server Online.") self.fhdhr.logger.info("HTTP Server Online.")
@ -90,12 +92,12 @@ class fHDHR_HTTP_Server():
return True return True
def add_endpoint(self, endpoint=None, endpoint_name=None, handler=None, methods=['GET']): def add_endpoint(self, endpoint=None, endpoint_name=None, handler=None, methods=['GET']):
self.app.add_url_rule(endpoint, endpoint_name, handler, methods=methods) self.fhdhr.app.add_url_rule(endpoint, endpoint_name, handler, methods=methods)
def run(self): def run(self):
self.http = WSGIServer(self.fhdhr.api.address_tuple, self.http = WSGIServer(self.fhdhr.api.address_tuple,
self.app.wsgi_app, self.fhdhr.app.wsgi_app,
log=self.fhdhr.logger) log=self.fhdhr.logger)
try: try:

View File

@ -16,20 +16,18 @@ class Startup_Tasks():
def get(self, *args): def get(self, *args):
# Hit Channel Update API URL without waiting unless we've never scanned before # Hit Channel Update API
haseverscanned = self.fhdhr.db.get_fhdhr_value("channels", "scanned_time") haseverscanned = self.fhdhr.db.get_fhdhr_value("channels", "scanned_time")
updatechannels = False
if not haseverscanned: if not haseverscanned:
self.fhdhr.web.session.get(self.channel_update_url) updatechannels = True
elif self.fhdhr.config.dict["fhdhr"]["chanscan_on_start"]: elif self.fhdhr.config.dict["fhdhr"]["chanscan_on_start"]:
try: updatechannels = True
self.fhdhr.web.session.get(self.channel_update_url, timeout=0.0000000001)
except self.fhdhr.web.exceptions.ReadTimeout:
pass
# Hit EPG Update API URL without waiting if updatechannels:
try: self.fhdhr.api.client.get(self.channel_update_url)
self.fhdhr.web.session.get(self.epg_update_url, timeout=0.0000000001)
except self.fhdhr.web.exceptions.ReadTimeout: # Hit EPG Update API
pass self.fhdhr.api.client.get(self.epg_update_url)
return "Success" return "Success"