diff --git a/bin/geomag_webservice.py b/bin/geomag_webservice.py new file mode 100755 index 0000000000000000000000000000000000000000..039f401531353065143ddeed20a6fa9e5da7c9c1 --- /dev/null +++ b/bin/geomag_webservice.py @@ -0,0 +1,35 @@ +#! /usr/bin/env python + +from __future__ import absolute_import, print_function + +import os +import sys +from wsgiref.simple_server import make_server +# ensure geomag is on the path before importing +try: + import geomagio # noqa (tells linter to ignore this line.) +except ImportError: + path = os.path + script_dir = path.dirname(path.abspath(__file__)) + sys.path.append(path.normpath(path.join(script_dir, '..'))) + import geomagio + + +if __name__ == '__main__': + # read configuration from environment + edge_host = os.getenv('EDGE_HOST', 'cwbpub.cr.usgs.gov') + edge_port = int(os.getenv('EDGE_PORT', '2060')) + factory_type = os.getenv('GEOMAG_FACTORY_TYPE', 'edge') + webservice_host = os.getenv('GEOMAG_WEBSERVICE_HOST', '') + webservice_port = int(os.getenv('GEOMAG_WEBSERVICE_PORT', '7981')) + + # configure factory + if factory_type == 'edge': + factory = geomagio.edge.EdgeFactory(host=edge_host, port=edge_port) + else: + raise "Unknown factory type '%s'" % factory_type + + print("Starting webservice on %s:%d" % (webservice_host, webservice_port)) + app = geomagio.WebService(factory) + httpd = make_server(webservice_host, webservice_port, app) + httpd.serve_forever() diff --git a/geomagio/WebService.py b/geomagio/WebService.py index 411ab6b80f9c2eac0f9188b453a94f9b1d66821c..416381a36e7389ba44d6a0c691b70bdba4e55288 100644 --- a/geomagio/WebService.py +++ b/geomagio/WebService.py @@ -74,8 +74,8 @@ def _get_param(params, key, required=False): class WebService(object): - def __init__(self, factory, metadata=None): - self.factory = factory + def __init__(self, factory=None, metadata=None): + self.factory = factory or EdgeFactory() self.metadata = metadata or ObservatoryMetadata().metadata base = os.path.dirname(__file__) filepath = os.path.abspath(os.path.join(base, '..', 'package.json')) @@ -343,11 +343,3 @@ class WebServiceQuery(object): class WebServiceException(Exception): """Base class for exceptions thrown by web services.""" pass - - -if __name__ == '__main__': - from wsgiref.simple_server import make_server - - app = WebService(EdgeFactory()) - httpd = make_server('', 7981, app) - httpd.serve_forever() diff --git a/geomagio/__init__.py b/geomagio/__init__.py index d871a122884b9940dd200d5ac436c9b2414b5d50..036d81bf40a799727e7af6c27970f87436b65e66 100644 --- a/geomagio/__init__.py +++ b/geomagio/__init__.py @@ -5,14 +5,15 @@ from __future__ import absolute_import from . import ChannelConverter from . import StreamConverter +from . import TimeseriesUtility +from . import Util from .Controller import Controller from .ObservatoryMetadata import ObservatoryMetadata from .PlotTimeseriesFactory import PlotTimeseriesFactory from .TimeseriesFactory import TimeseriesFactory from .TimeseriesFactoryException import TimeseriesFactoryException -from . import TimeseriesUtility -from . import Util +from .WebService import WebService __all__ = [ 'ChannelConverter', @@ -25,5 +26,5 @@ __all__ = [ 'TimeseriesFactoryException', 'TimeseriesUtility', 'Util', - 'Url' + 'WebService' ] diff --git a/setup.py b/setup.py index a48b62df0bd1ce5de44e63e87e0215e517295414..051486b3bb55387d5b2b25f8851bdac296f5362f 100644 --- a/setup.py +++ b/setup.py @@ -26,6 +26,7 @@ setup( ], scripts=[ 'bin/geomag.py', - 'bin/make_cal.py', + 'bin/geomag_webservice.py', + 'bin/make_cal.py' ] )