Compare commits

..

6 Commits
0.12 ... 0.15

Author SHA1 Message Date
Romuald Juchnowicz-Bierbasz
ca8d0dfaf4 Increment version, add changelog 2019-03-08 10:19:43 +01:00
Romuald Juchnowicz-Bierbasz
73bc9aa8ec SDK-2623: Call shutdown on socket close 2019-03-08 10:16:57 +01:00
Romuald Juchnowicz-Bierbasz
52273e2f8c Increment veresion, add changelog 2019-03-07 13:19:37 +01:00
Romuald Juchnowicz-Bierbasz
bda867473c SDK-2627: Add version param to Plugin 2019-03-07 13:18:26 +01:00
Pawel Kierski
6885cdc439 Increment version 2019-03-06 14:13:45 +01:00
Pawel Kierski
88e25a93be Ensure log folder exists 2019-03-06 11:15:33 +01:00
6 changed files with 23 additions and 12 deletions

View File

@@ -30,4 +30,11 @@ pip install -r requirements.txt
Run tests:
```bash
pytest
```
```
## Changelog
### 0.15
* `shutdown()` is called on socket disconnection.
### 0.14
* Added required version parameter to Plugin constructor.

View File

@@ -6,6 +6,7 @@ import dataclasses
from enum import Enum
from collections import OrderedDict
import sys
import os
from galaxy.api.jsonrpc import Server, NotificationClient
from galaxy.api.consts import Feature
@@ -22,9 +23,10 @@ class JSONEncoder(json.JSONEncoder):
return super().default(o)
class Plugin():
def __init__(self, platform, reader, writer, handshake_token):
logging.info("Creating plugin for platform %s", platform.value)
def __init__(self, platform, version, reader, writer, handshake_token):
logging.info("Creating plugin for platform %s, version %s", platform.value, version)
self._platform = platform
self._version = version
self._feature_methods = OrderedDict()
self._active = True
@@ -37,7 +39,7 @@ class Plugin():
self._notification_client = NotificationClient(self._writer, encoder)
def eof_handler():
self._active = False
self._shutdown()
self._server.register_eof(eof_handler)
# internal
@@ -319,6 +321,8 @@ def _prepare_logging(logger_file):
root = logging.getLogger()
root.setLevel(logging.DEBUG)
if logger_file:
# ensure destination folder exists
os.makedirs(os.path.dirname(os.path.abspath(logger_file)), exist_ok=True)
handler = logging.handlers.RotatingFileHandler(
logger_file,
mode="a",

View File

@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup(
name="galaxy.plugin.api",
version="0.12",
version="0.15",
description="Galaxy python plugin API",
author='Galaxy team',
author_email='galaxy@gog.com',

View File

@@ -60,7 +60,7 @@ def plugin(reader, writer):
stack.enter_context(patch.object(Plugin, method, new_callable=AsyncMock))
for method in methods:
stack.enter_context(patch.object(Plugin, method))
yield Plugin(Platform.Generic, reader, writer, "token")
yield Plugin(Platform.Generic, "0.1", reader, writer, "token")
@pytest.fixture(autouse=True)
def my_caplog(caplog):

View File

@@ -2,14 +2,14 @@ from galaxy.api.plugin import Plugin
from galaxy.api.consts import Platform, Feature
def test_base_class():
plugin = Plugin(Platform.Generic, None, None, None)
plugin = Plugin(Platform.Generic, "0.1", None, None, None)
assert plugin.features == []
def test_no_overloads():
class PluginImpl(Plugin): #pylint: disable=abstract-method
pass
plugin = PluginImpl(Platform.Generic, None, None, None)
plugin = PluginImpl(Platform.Generic, "0.1", None, None, None)
assert plugin.features == []
def test_one_method_feature():
@@ -17,7 +17,7 @@ def test_one_method_feature():
async def get_owned_games(self):
pass
plugin = PluginImpl(Platform.Generic, None, None, None)
plugin = PluginImpl(Platform.Generic, "0.1", None, None, None)
assert plugin.features == [Feature.ImportOwnedGames]
def test_multiple_methods_feature_all():
@@ -33,7 +33,7 @@ def test_multiple_methods_feature_all():
async def get_room_history_from_timestamp(self, room_id, timestamp):
pass
plugin = PluginImpl(Platform.Generic, None, None, None)
plugin = PluginImpl(Platform.Generic, "0.1", None, None, None)
assert plugin.features == [Feature.Chat]
def test_multiple_methods_feature_not_all():
@@ -41,5 +41,5 @@ def test_multiple_methods_feature_not_all():
async def send_message(self, room_id, message):
pass
plugin = PluginImpl(Platform.Generic, None, None, None)
plugin = PluginImpl(Platform.Generic, "0.1", None, None, None)
assert plugin.features == []

View File

@@ -15,7 +15,7 @@ def test_get_capabilites(reader, writer, readline, write):
"method": "get_capabilities"
}
token = "token"
plugin = PluginImpl(Platform.Generic, reader, writer, token)
plugin = PluginImpl(Platform.Generic, "0.1", reader, writer, token)
readline.side_effect = [json.dumps(request), ""]
asyncio.run(plugin.run())
response = json.loads(write.call_args[0][0])