mirror of
https://github.com/gogcom/galaxy-integrations-python-api.git
synced 2026-01-01 11:28:12 -05:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad758b0da9 |
2
setup.py
2
setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="galaxy.plugin.api",
|
name="galaxy.plugin.api",
|
||||||
version="0.64",
|
version="0.65",
|
||||||
description="GOG Galaxy Integrations Python API",
|
description="GOG Galaxy Integrations Python API",
|
||||||
author='Galaxy team',
|
author='Galaxy team',
|
||||||
author_email='galaxy@gog.com',
|
author_email='galaxy@gog.com',
|
||||||
|
|||||||
@@ -152,3 +152,13 @@ class PresenceState(Enum):
|
|||||||
Online = "online"
|
Online = "online"
|
||||||
Offline = "offline"
|
Offline = "offline"
|
||||||
Away = "away"
|
Away = "away"
|
||||||
|
|
||||||
|
|
||||||
|
class SubscriptionDiscovery(Flag):
|
||||||
|
"""Possible capabilities which inform what methods of subscriptions ownership detection are supported.
|
||||||
|
|
||||||
|
:param AUTOMATIC: integration can retrieve the proper status of subscription ownership.
|
||||||
|
:param USER_ENABLED: integration can handle override of ~class::`Subscription.owned` value to True
|
||||||
|
"""
|
||||||
|
AUTOMATIC = 1
|
||||||
|
USER_ENABLED = 2
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Dict, List, Optional
|
from typing import Dict, List, Optional
|
||||||
|
|
||||||
from galaxy.api.consts import LicenseType, LocalGameState, PresenceState
|
from galaxy.api.consts import LicenseType, LocalGameState, PresenceState, SubscriptionDiscovery
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -217,6 +217,7 @@ class UserPresence:
|
|||||||
in_game_status: Optional[str] = None
|
in_game_status: Optional[str] = None
|
||||||
full_status: Optional[str] = None
|
full_status: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Subscription:
|
class Subscription:
|
||||||
"""Information about a subscription.
|
"""Information about a subscription.
|
||||||
@@ -224,10 +225,21 @@ class Subscription:
|
|||||||
:param subscription_name: name of the subscription, will also be used as its identifier.
|
:param subscription_name: name of the subscription, will also be used as its identifier.
|
||||||
:param owned: whether the subscription is owned or not, None if unknown.
|
:param owned: whether the subscription is owned or not, None if unknown.
|
||||||
:param end_time: unix timestamp of when the subscription ends, None if unknown.
|
:param end_time: unix timestamp of when the subscription ends, None if unknown.
|
||||||
|
:param subscription_discovery: combination of settings that can be manually
|
||||||
|
chosen by user to determine subscription handling behaviour. For example, if the integration cannot retrieve games
|
||||||
|
for subscription when user doesn't own it, then USER_ENABLED should not be used.
|
||||||
|
If the integration cannot determine subscription ownership for a user then AUTOMATIC should not be used.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
subscription_name: str
|
subscription_name: str
|
||||||
owned: Optional[bool] = None
|
owned: Optional[bool] = None
|
||||||
end_time: Optional[int] = None
|
end_time: Optional[int] = None
|
||||||
|
subscription_discovery: SubscriptionDiscovery = SubscriptionDiscovery.AUTOMATIC | \
|
||||||
|
SubscriptionDiscovery.USER_ENABLED
|
||||||
|
|
||||||
|
def __post_init__(self):
|
||||||
|
assert self.subscription_discovery in [SubscriptionDiscovery.AUTOMATIC, SubscriptionDiscovery.USER_ENABLED,
|
||||||
|
SubscriptionDiscovery.AUTOMATIC | SubscriptionDiscovery.USER_ENABLED]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from galaxy.api.types import Subscription, SubscriptionGame
|
from galaxy.api.types import Subscription, SubscriptionGame
|
||||||
|
from galaxy.api.consts import SubscriptionDiscovery
|
||||||
from galaxy.api.errors import FailedParsingManifest, BackendError, UnknownError
|
from galaxy.api.errors import FailedParsingManifest, BackendError, UnknownError
|
||||||
from galaxy.unittest.mock import async_return_value
|
from galaxy.unittest.mock import async_return_value
|
||||||
|
|
||||||
@@ -17,8 +18,8 @@ async def test_get_subscriptions_success(plugin, read, write):
|
|||||||
|
|
||||||
plugin.get_subscriptions.return_value = async_return_value([
|
plugin.get_subscriptions.return_value = async_return_value([
|
||||||
Subscription("1"),
|
Subscription("1"),
|
||||||
Subscription("2", False),
|
Subscription("2", False, subscription_discovery=SubscriptionDiscovery.AUTOMATIC),
|
||||||
Subscription("3", True, 1580899100)
|
Subscription("3", True, 1580899100, SubscriptionDiscovery.USER_ENABLED)
|
||||||
])
|
])
|
||||||
await plugin.run()
|
await plugin.run()
|
||||||
plugin.get_subscriptions.assert_called_with()
|
plugin.get_subscriptions.assert_called_with()
|
||||||
@@ -30,16 +31,19 @@ async def test_get_subscriptions_success(plugin, read, write):
|
|||||||
"result": {
|
"result": {
|
||||||
"subscriptions": [
|
"subscriptions": [
|
||||||
{
|
{
|
||||||
"subscription_name": "1"
|
"subscription_name": "1",
|
||||||
|
'subscription_discovery': 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"subscription_name": "2",
|
"subscription_name": "2",
|
||||||
"owned": False
|
"owned": False,
|
||||||
|
'subscription_discovery': 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"subscription_name": "3",
|
"subscription_name": "3",
|
||||||
"owned": True,
|
"owned": True,
|
||||||
"end_time": 1580899100
|
"end_time": 1580899100,
|
||||||
|
'subscription_discovery': 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -77,6 +81,7 @@ async def test_get_subscriptions_failure_generic(plugin, read, write, error, cod
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_get_subscription_games_success(plugin, read, write):
|
async def test_get_subscription_games_success(plugin, read, write):
|
||||||
plugin.prepare_subscription_games_context.return_value = async_return_value(5)
|
plugin.prepare_subscription_games_context.return_value = async_return_value(5)
|
||||||
|
|||||||
Reference in New Issue
Block a user