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.api = fHDHR_API_URLs(settings)
self.api = fHDHR_API_URLs(settings, self.web)
class fHDHR_OBJ():

View File

@ -1,10 +1,26 @@
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():
def __init__(self, settings):
def __init__(self, settings, web):
self.config = settings
self.web = web
# Replaced later
self.client = Fillin_Client(settings, web)
self.address = self.config.dict["fhdhr"]["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"]:
fhdhr_epg.start()
# Perform some actions now that HTTP Server is running, but don't wait for response
# Hit EPG Update API URL without waiting
# Perform some actions now that HTTP Server is running
fhdhr.logger.info("Waiting 3 seconds to send startup tasks trigger.")
time.sleep(3)
try:
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
fhdhr.api.client.get("/api/startup_tasks")
# wait forever
while True:

View File

@ -134,3 +134,8 @@ class WebReq():
def __init__(self):
self.session = requests.Session()
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.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.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.add_endpoints(self.origin_endpoints, "origin_endpoints")
self.app.before_request(self.before_request)
self.app.after_request(self.after_request)
self.app.before_first_request(self.before_first_request)
self.fhdhr.app.before_request(self.before_request)
self.fhdhr.app.after_request(self.after_request)
self.fhdhr.app.before_first_request(self.before_first_request)
def before_first_request(self):
self.fhdhr.logger.info("HTTP Server Online.")
@ -90,12 +92,12 @@ class fHDHR_HTTP_Server():
return True
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):
self.http = WSGIServer(self.fhdhr.api.address_tuple,
self.app.wsgi_app,
self.fhdhr.app.wsgi_app,
log=self.fhdhr.logger)
try:

View File

@ -16,20 +16,18 @@ class Startup_Tasks():
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")
updatechannels = False
if not haseverscanned:
self.fhdhr.web.session.get(self.channel_update_url)
updatechannels = True
elif self.fhdhr.config.dict["fhdhr"]["chanscan_on_start"]:
try:
self.fhdhr.web.session.get(self.channel_update_url, timeout=0.0000000001)
except self.fhdhr.web.exceptions.ReadTimeout:
pass
updatechannels = True
# Hit EPG Update API URL without waiting
try:
self.fhdhr.web.session.get(self.epg_update_url, timeout=0.0000000001)
except self.fhdhr.web.exceptions.ReadTimeout:
pass
if updatechannels:
self.fhdhr.api.client.get(self.channel_update_url)
# Hit EPG Update API
self.fhdhr.api.client.get(self.epg_update_url)
return "Success"