diff --git a/openlp/core/api/__init__.py b/openlp/core/api/__init__.py index 0fcf80a66..3ad574faf 100644 --- a/openlp/core/api/__init__.py +++ b/openlp/core/api/__init__.py @@ -23,7 +23,6 @@ from openlp.core.api.http.endpoint import Endpoint from openlp.core.api.http import register_endpoint, requires_auth from openlp.core.api.tab import ApiTab -from openlp.core.api.controller import ApiController from openlp.core.api.poll import Poller -__all__ = ['Endpoint', 'ApiController', 'ApiTab', 'register_endpoint', 'requires_auth'] +__all__ = ['Endpoint', 'ApiTab', 'register_endpoint', 'requires_auth'] diff --git a/openlp/core/api/controller.py b/openlp/core/api/controller.py deleted file mode 100644 index a9723c3f6..000000000 --- a/openlp/core/api/controller.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2016 OpenLP Developers # -# --------------------------------------------------------------------------- # -# This program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; version 2 of the License. # -# # -# This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### -import logging - -from openlp.core.api.http import register_endpoint -from openlp.core.api.http.server import HttpServer -from openlp.core.api.endpoint.controller import controller_endpoint, api_controller_endpoint -from openlp.core.api.endpoint.core import stage_endpoint, blank_endpoint, main_endpoint -from openlp.core.api.endpoint.service import service_endpoint, api_service_endpoint -from openlp.core.api.websockets import WebSocketServer -from openlp.core.api.poll import Poller -from openlp.core.common import OpenLPMixin, Registry, RegistryMixin, RegistryProperties - -log = logging.getLogger(__name__) - - -class ApiController(RegistryMixin, OpenLPMixin, RegistryProperties): - """ - The APIController handles the starting of the API middleware. - The HTTP and Websocket servers are started - The core endpoints are generated (just by their declaration). - """ - def __init__(self, parent=None): - """ - Constructor - """ - super(ApiController, self).__init__(parent) - register_endpoint(controller_endpoint) - register_endpoint(api_controller_endpoint) - register_endpoint(stage_endpoint) - register_endpoint(blank_endpoint) - register_endpoint(main_endpoint) - register_endpoint(service_endpoint) - register_endpoint(api_service_endpoint) - - def bootstrap_post_set_up(self): - """ - Register the poll return service and start the servers. - """ - self.poller = Poller() - Registry().register('poller', self.poller) - self.ws_server = WebSocketServer() - self.http_server = HttpServer() diff --git a/openlp/core/api/http/server.py b/openlp/core/api/http/server.py index 5375b9251..069f273e9 100644 --- a/openlp/core/api/http/server.py +++ b/openlp/core/api/http/server.py @@ -30,8 +30,13 @@ import logging from PyQt5 import QtCore from waitress import serve +from openlp.core.api.http import register_endpoint from openlp.core.api.http import application -from openlp.core.common import RegistryProperties, OpenLPMixin, Settings +from openlp.core.common import RegistryMixin, RegistryProperties, OpenLPMixin, Settings, Registry +from openlp.core.api.poll import Poller +from openlp.core.api.endpoint.controller import controller_endpoint, api_controller_endpoint +from openlp.core.api.endpoint.core import stage_endpoint, blank_endpoint, main_endpoint +from openlp.core.api.endpoint.service import service_endpoint, api_service_endpoint log = logging.getLogger(__name__) @@ -60,17 +65,31 @@ class HttpWorker(QtCore.QObject): pass -class HttpServer(RegistryProperties, OpenLPMixin): +class HttpServer(RegistryMixin, RegistryProperties, OpenLPMixin): """ Wrapper round a server instance """ - def __init__(self): + def __init__(self, parent=None): """ Initialise the http server, and start the http server """ - super(HttpServer, self).__init__() + super(HttpServer, self).__init__(parent) self.worker = HttpWorker() self.thread = QtCore.QThread() self.worker.moveToThread(self.thread) self.thread.started.connect(self.worker.run) self.thread.start() + + def bootstrap_post_set_up(self): + """ + Register the poll return service and start the servers. + """ + self.poller = Poller() + Registry().register('poller', self.poller) + register_endpoint(controller_endpoint) + register_endpoint(api_controller_endpoint) + register_endpoint(stage_endpoint) + register_endpoint(blank_endpoint) + register_endpoint(main_endpoint) + register_endpoint(service_endpoint) + register_endpoint(api_service_endpoint) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 9f1b8122d..b3b80c555 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -34,7 +34,8 @@ from tempfile import gettempdir from PyQt5 import QtCore, QtGui, QtWidgets -from openlp.core.api import ApiController +from openlp.core.api import websockets +from openlp.core.api.http import server from openlp.core.common import Registry, RegistryProperties, AppLocation, LanguageManager, Settings, \ check_directory_exists, translate, is_win, is_macosx, add_actions from openlp.core.common.actions import ActionList, CategoryOrder @@ -533,7 +534,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties): Settings().set_up_default_values() self.about_form = AboutForm(self) MediaController() - ApiController() + websockets.WebSocketServer() + server.HttpServer() SettingsForm(self) self.formatting_tag_form = FormattingTagForm(self) self.shortcut_form = ShortcutListForm(self)