mirror of
https://github.com/fHDHR/fHDHR_NextPVR.git
synced 2025-12-06 13:26:57 -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.web = fHDHR.tools.WebReq()
|
||||||
|
|
||||||
self.api = fHDHR_API_URLs(settings)
|
self.api = fHDHR_API_URLs(settings, self.web)
|
||||||
|
|
||||||
|
|
||||||
class fHDHR_OBJ():
|
class fHDHR_OBJ():
|
||||||
|
|||||||
@ -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"]
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user