mirror of
https://github.com/fHDHR/fHDHR_NextPVR.git
synced 2025-12-06 04:36:58 -05:00
Implement internal client system
This commit is contained in:
parent
0cc13306ab
commit
845efb0719
@ -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():
|
||||
|
||||
@ -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"]
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user