mirror of
https://github.com/gogcom/galaxy-integrations-python-api.git
synced 2026-01-01 03:18:25 -05:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96cb48fcaf | ||
|
|
17b0542fdf | ||
|
|
0cf447bdcf | ||
|
|
259702e0de | ||
|
|
b96c55397e | ||
|
|
f82cab2770 | ||
|
|
1e7c284035 | ||
|
|
0c49ee315e |
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: GOG GALAXY 2.0 issue
|
||||
url: https://mantis2.gog.com/
|
||||
about: Report issues related to GOG GALAXY 2.0, official integrations or the whole ecosystem
|
||||
- name: Platform ID request
|
||||
url: https://github.com/gogcom/galaxy-integrations-python-api/issues/160
|
||||
about: Report missing platform id
|
||||
- name: Community integrations
|
||||
url: https://github.com/Mixaill/awesome-gog-galaxy
|
||||
about: Find integrations and their maintainers, request new integrations or report issues related to unofficial integrations.
|
||||
14
.github/ISSUE_TEMPLATE/problem_report.md
vendored
Normal file
14
.github/ISSUE_TEMPLATE/problem_report.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: API issue
|
||||
about: Report a bug or problem with current API architecture
|
||||
|
||||
---
|
||||
|
||||
**Problem**
|
||||
<!-- Describe the problem you faced. -->
|
||||
|
||||
**Solution**
|
||||
<!-- Describe the solution you'd like. -->
|
||||
|
||||
**Alternatives**
|
||||
<!-- Optionally describe possible alternatives or current workarounds if any. -->
|
||||
@@ -80,3 +80,12 @@ Platform ID list for GOG Galaxy 2.0 Integrations
|
||||
| nds | Nintendo DS |
|
||||
| 3ds | Nintendo 3DS |
|
||||
| pathofexile | Path of Exile |
|
||||
| twitch | Twitch |
|
||||
| minecraft | Minecraft |
|
||||
| gamesessions | GameSessions |
|
||||
| nuuvem | Nuuvem |
|
||||
| fxstore | FX Store |
|
||||
| indiegala | IndieGala |
|
||||
| playfire | Playfire |
|
||||
| oculus | Oculus |
|
||||
| rockstar | Rockstar |
|
||||
|
||||
2
setup.py
2
setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name="galaxy.plugin.api",
|
||||
version="0.65.1",
|
||||
version="0.67.0",
|
||||
description="GOG Galaxy Integrations Python API",
|
||||
author='Galaxy team',
|
||||
author_email='galaxy@gog.com',
|
||||
|
||||
@@ -87,3 +87,16 @@ class CollectionImporter(Importer):
|
||||
self._notification_failure(id_, UnknownError())
|
||||
finally:
|
||||
self._notification_partially_finished(id_)
|
||||
|
||||
|
||||
class SynchroneousImporter(Importer):
|
||||
async def _import_elements(self, ids_, context_):
|
||||
try:
|
||||
for id_ in ids_:
|
||||
await self._import_element(id_, context_)
|
||||
self._notification_finished()
|
||||
self._complete()
|
||||
except asyncio.CancelledError:
|
||||
logger.debug("Importing %s cancelled", self._name)
|
||||
finally:
|
||||
self._import_in_progress = False
|
||||
|
||||
@@ -13,7 +13,7 @@ from galaxy.api.types import (
|
||||
Subscription, SubscriptionGame
|
||||
)
|
||||
from galaxy.task_manager import TaskManager
|
||||
from galaxy.api.importer import Importer, CollectionImporter
|
||||
from galaxy.api.importer import Importer, CollectionImporter, SynchroneousImporter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -104,7 +104,7 @@ class Plugin:
|
||||
self._user_presence_import_finished,
|
||||
self.user_presence_import_complete
|
||||
)
|
||||
self._local_size_importer = Importer(
|
||||
self._local_size_importer = SynchroneousImporter(
|
||||
self._external_task_manager,
|
||||
"local size",
|
||||
self.get_local_size,
|
||||
@@ -1027,10 +1027,9 @@ class Plugin:
|
||||
It is preferable to avoid iterating over local game files when overriding this method.
|
||||
If possible, please use a more efficient way of game size retrieval.
|
||||
|
||||
:param game_id: the id of the installed game
|
||||
:param context: the value returned from :meth:`prepare_local_size_context`
|
||||
:return: game size (in bytes) or `None` if game size cannot be determined;
|
||||
'0' if the game is not installed, or if it is not present locally (e.g. installed
|
||||
on another machine and accessible via remote connection, playable via web browser etc.)
|
||||
:return: the size of the game on a user-owned storage device (in bytes) or `None` if the size cannot be determined
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ async def test_get_local_size_success(plugin, read, write):
|
||||
}
|
||||
read.side_effect = [async_return_value(create_message(request)), async_return_value(b"", 10)]
|
||||
plugin.get_local_size.side_effect = [
|
||||
async_return_value(100000000000),
|
||||
async_return_value(100000000000, 1),
|
||||
async_return_value(None),
|
||||
async_return_value(3333333)
|
||||
]
|
||||
@@ -89,12 +89,15 @@ async def test_get_local_size_error(exception, code, message, plugin, read, writ
|
||||
plugin.get_local_size.assert_called()
|
||||
plugin.local_size_import_complete.assert_called_once_with()
|
||||
|
||||
assert get_messages(write) == [
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": request_id,
|
||||
"result": None
|
||||
},
|
||||
direct_response = {
|
||||
"jsonrpc": "2.0",
|
||||
"id": request_id,
|
||||
"result": None
|
||||
}
|
||||
responses = get_messages(write)
|
||||
assert direct_response in responses
|
||||
responses.remove(direct_response)
|
||||
assert responses == [
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "local_size_import_failure",
|
||||
@@ -145,6 +148,7 @@ async def test_prepare_get_local_size_context_error(plugin, read, write):
|
||||
@pytest.mark.asyncio
|
||||
async def test_import_already_in_progress_error(plugin, read, write):
|
||||
plugin.prepare_local_size_context.return_value = async_return_value(None)
|
||||
plugin.get_local_size.return_value = async_return_value(100, 5)
|
||||
requests = [
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
@@ -185,4 +189,3 @@ async def test_import_already_in_progress_error(plugin, read, write):
|
||||
"message": "Import already in progress"
|
||||
}
|
||||
} in responses
|
||||
|
||||
|
||||
Reference in New Issue
Block a user