diff --git a/openflexure_microscope/plugins/default/__init__.py b/openflexure_microscope/plugins/default/__init__.py index e69de29b..f42b093e 100644 --- a/openflexure_microscope/plugins/default/__init__.py +++ b/openflexure_microscope/plugins/default/__init__.py @@ -0,0 +1 @@ +from .plugin import Plugin \ No newline at end of file diff --git a/openflexure_microscope/plugins/default/api.py b/openflexure_microscope/plugins/default/api.py new file mode 100644 index 00000000..fce53194 --- /dev/null +++ b/openflexure_microscope/plugins/default/api.py @@ -0,0 +1,20 @@ +from openflexure_microscope.api.utilities import parse_payload +from openflexure_microscope.api.v1.views import MicroscopeViewPlugin + +from flask import request, Response, escape + +import logging + + +class IdentifyAPI(MicroscopeViewPlugin): + + def get(self): + data = self.microscope.plugin.default.identify() # Call a method from our plugin, using the full route + return Response(escape(data)) + + +class HelloWorldAPI(MicroscopeViewPlugin): + + def get(self): + data = self.plugin.hello_world() # Call a method from our plugin, using the MicroscopeViewPlugin.plugin shortcut + return Response(data) diff --git a/openflexure_microscope/plugins/default/plugin.py b/openflexure_microscope/plugins/default/plugin.py new file mode 100644 index 00000000..39261c6e --- /dev/null +++ b/openflexure_microscope/plugins/default/plugin.py @@ -0,0 +1,30 @@ +from openflexure_microscope.plugins import MicroscopePlugin + +from .api import IdentifyAPI, HelloWorldAPI + + +class Plugin(MicroscopePlugin): + """ + A set of default plugins + """ + + api_views = { + '/identify': IdentifyAPI, + '/hello': HelloWorldAPI, + } + + def identify(self): + """ + Demonstrate access to Microscope.camera, and Microscope.stage + """ + + response = "My parent camera is {}, and my parent stage is {}.".format(self.microscope.camera, self.microscope.stage) + print(response) + return response + + def hello_world(self): + """ + Demonstrate passive method + """ + + return "Hello world!" \ No newline at end of file diff --git a/openflexure_microscope/plugins/default/test_plugin/__init__.py b/openflexure_microscope/plugins/default/test_plugin/__init__.py deleted file mode 100644 index d132c52b..00000000 --- a/openflexure_microscope/plugins/default/test_plugin/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from openflexure_microscope.plugins.default.test_plugin.api import ENDPOINTS -from openflexure_microscope.plugins.default.test_plugin.plugin import PLUGINS \ No newline at end of file diff --git a/openflexure_microscope/plugins/default/test_plugin/api.py b/openflexure_microscope/plugins/default/test_plugin/api.py deleted file mode 100644 index 500962ea..00000000 --- a/openflexure_microscope/plugins/default/test_plugin/api.py +++ /dev/null @@ -1,28 +0,0 @@ -from openflexure_microscope.api.utilities import parse_payload -from openflexure_microscope.api.v1.views import MicroscopeView - -from flask import request, Response - -import logging - - -class PluginTestAPI(MicroscopeView): - - def get(self): - data = self.microscope.plugin.test1.run() # Call a method from our plugin - return Response(data) - - def post(self): - # Get payload - state = parse_payload(request) - logging.debug(state) - - # Handle absolute positioning - if 'data' in state: # If value is given in payload JSON - data = str(state['data']) # Process and store that value - - return Response(data) - -ENDPOINTS = { - 'test1': PluginTestAPI -} diff --git a/openflexure_microscope/plugins/test_plugin/__init__.py b/openflexure_microscope/plugins/test_plugin/__init__.py new file mode 100644 index 00000000..44d6fa90 --- /dev/null +++ b/openflexure_microscope/plugins/test_plugin/__init__.py @@ -0,0 +1 @@ +from .plugin import FirstPlugin \ No newline at end of file diff --git a/openflexure_microscope/plugins/default/test_plugin/plugin.py b/openflexure_microscope/plugins/test_plugin/plugin.py similarity index 64% rename from openflexure_microscope/plugins/default/test_plugin/plugin.py rename to openflexure_microscope/plugins/test_plugin/plugin.py index 873a781b..e6bf90ab 100644 --- a/openflexure_microscope/plugins/default/test_plugin/plugin.py +++ b/openflexure_microscope/plugins/test_plugin/plugin.py @@ -11,9 +11,4 @@ class FirstPlugin(MicroscopePlugin): """ response = "My parent camera is {}, and my parent stage is {}.".format(self.microscope.camera, self.microscope.stage) - return response - - -PLUGINS = { - 'test1': FirstPlugin, -} #: dict: Dictionary describing the plugins. Keys are the names of the plugin's namescape, with a value corresponding to the class of that plugin. \ No newline at end of file + return response \ No newline at end of file