Compare commits

...

14 Commits
0.18 ... 0.22

Author SHA1 Message Date
Romuald Juchnowicz-Bierbasz
92b1d8e4df SDK-2760: Fix paths 2019-04-16 11:02:56 +02:00
Romuald Juchnowicz-Bierbasz
4adef2dace SDK-2760: Move modules 2019-04-16 10:38:45 +02:00
Romuald Juchnowicz-Bierbasz
1430fe39d7 SDK-2760: Make galaxy namespace package 2019-04-16 10:33:05 +02:00
Romuald Juchnowicz-Bierbasz
c591efc493 Increment version 2019-04-16 10:27:07 +02:00
Romuald Juchnowicz-Bierbasz
7c4f3fba5b SDK-2760: Add mock module 2019-04-16 10:26:37 +02:00
Romuald Juchnowicz-Bierbasz
f2e2e41d04 SDK-2760: Add tools module 2019-04-16 10:24:32 +02:00
Romuald Juchnowicz-Bierbasz
25b850d8bb SDK-2760: Dlc list optional 2019-04-16 10:21:31 +02:00
Romuald Juchnowicz-Bierbasz
403736612a Increment version, add changelog 2019-04-12 13:52:47 +02:00
Romuald Juchnowicz-Bierbasz
3071c2e771 SDK-2760: Add Epic platform 2019-04-12 13:51:41 +02:00
Aliaksei Paulouski
23ef34bed5 Increment version 2019-04-06 15:02:06 +02:00
Aliaksei Paulouski
a4b08f8105 Add Cookies to NextStep 2019-04-06 15:02:01 +02:00
Romuald Bierbasz
4d62b8ccb8 SDK-2743: Remove logging setup 2019-04-05 14:24:14 +02:00
Aliaksei Paulouski
d759b4aa85 Increment version 2019-03-28 14:37:30 +01:00
Romuald Juchnowicz-Bierbasz
9b33397827 Add NextStep and pass_login_credentials 2019-03-28 10:20:16 +01:00
9 changed files with 44 additions and 28 deletions

View File

@@ -34,6 +34,8 @@ pytest
## Changelog ## Changelog
### 0.21
* Add `Epic` platform.
### 0.16 ### 0.16
* Do not log sensitive data. * Do not log sensitive data.
* Return `LocalGameState` as int (possible combination of flags). * Return `LocalGameState` as int (possible combination of flags).

View File

@@ -10,6 +10,7 @@ class Platform(Enum):
Origin = "origin" Origin = "origin"
Uplay = "uplay" Uplay = "uplay"
Battlenet = "battlenet" Battlenet = "battlenet"
Epic = "epic"
class Feature(Enum): class Feature(Enum):
Unknown = "Unknown" Unknown = "Unknown"

View File

@@ -6,7 +6,6 @@ import dataclasses
from enum import Enum from enum import Enum
from collections import OrderedDict from collections import OrderedDict
import sys import sys
import os
from galaxy.api.jsonrpc import Server, NotificationClient from galaxy.api.jsonrpc import Server, NotificationClient
from galaxy.api.consts import Feature from galaxy.api.consts import Feature
@@ -49,6 +48,7 @@ class Plugin():
# implemented by developer # implemented by developer
self._register_method("init_authentication", self.authenticate, sensitive_params=["stored_credentials"]) self._register_method("init_authentication", self.authenticate, sensitive_params=["stored_credentials"])
self._register_method("pass_login_credentials", self.pass_login_credentials)
self._register_method( self._register_method(
"import_owned_games", "import_owned_games",
self.get_owned_games, self.get_owned_games,
@@ -274,6 +274,9 @@ class Plugin():
""" """
raise NotImplementedError() raise NotImplementedError()
async def pass_login_credentials(self, step, credentials, cookies):
raise NotImplementedError()
async def get_owned_games(self): async def get_owned_games(self):
raise NotImplementedError() raise NotImplementedError()
@@ -316,29 +319,7 @@ class Plugin():
async def get_game_times(self): async def get_game_times(self):
raise NotImplementedError() raise NotImplementedError()
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",
maxBytes=10000000,
backupCount=10,
encoding="utf-8"
)
else:
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
root.addHandler(handler)
def create_and_run_plugin(plugin_class, argv): def create_and_run_plugin(plugin_class, argv):
logger_file = argv[3] if len(argv) >= 4 else None
_prepare_logging(logger_file)
if len(argv) < 3: if len(argv) < 3:
logging.critical("Not enough parameters, required: token, port") logging.critical("Not enough parameters, required: token, port")
sys.exit(1) sys.exit(1)

View File

@@ -1,5 +1,5 @@
from dataclasses import dataclass from dataclasses import dataclass
from typing import List, Optional from typing import List, Dict, Optional
from galaxy.api.consts import LicenseType, LocalGameState, PresenceState from galaxy.api.consts import LicenseType, LocalGameState, PresenceState
@@ -8,6 +8,19 @@ class Authentication():
user_id: str user_id: str
user_name: str user_name: str
@dataclass
class Cookie():
name: str
value: str
domain: Optional[str] = None
path: Optional[str] = None
@dataclass
class NextStep():
next_step: str
auth_params: Dict[str, str]
cookies: Optional[List[Cookie]] = None
@dataclass @dataclass
class LicenseInfo(): class LicenseInfo():
license_type: LicenseType license_type: LicenseType
@@ -23,7 +36,7 @@ class Dlc():
class Game(): class Game():
game_id: str game_id: str
game_title: str game_title: str
dlcs: List[Dlc] dlcs: Optional[List[Dlc]]
license_info: LicenseInfo license_info: LicenseInfo
@dataclass @dataclass

20
galaxy/tools.py Normal file
View File

@@ -0,0 +1,20 @@
import io
import os
import zipfile
from glob import glob
def zip_folder(folder):
files = glob(os.path.join(folder, "**"), recursive=True)
files = [file.replace(folder + os.sep, "") for file in files]
files = [file for file in files if file]
zip_buffer = io.BytesIO()
with zipfile.ZipFile(zip_buffer, mode="w", compression=zipfile.ZIP_DEFLATED) as zipf:
for file in files:
zipf.write(os.path.join(folder, file), arcname=file)
return zip_buffer
def zip_folder_to_file(folder, filename):
zip_content = zip_folder(folder).getbuffer()
with open(filename, "wb") as archive:
archive.write(zip_content)

View File

@@ -2,5 +2,4 @@ from unittest.mock import MagicMock
class AsyncMock(MagicMock): class AsyncMock(MagicMock):
async def __call__(self, *args, **kwargs): async def __call__(self, *args, **kwargs):
# pylint: disable=useless-super-delegation
return super(AsyncMock, self).__call__(*args, **kwargs) return super(AsyncMock, self).__call__(*args, **kwargs)

View File

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

View File

@@ -6,7 +6,7 @@ import pytest
from galaxy.api.plugin import Plugin from galaxy.api.plugin import Plugin
from galaxy.api.consts import Platform from galaxy.api.consts import Platform
from tests.async_mock import AsyncMock from galaxy.unittest.mock import AsyncMock
@pytest.fixture() @pytest.fixture()
def reader(): def reader():