|
46 | 46 | ) |
47 | 47 | from .object_store import ObjectStore, ObjectStoreSync |
48 | 48 | from .protocols_base import CoreNode, CoreNodeSync |
49 | | -from .queries import get_commit_update_mutation |
| 49 | +from .queries import QUERY_USER, get_commit_update_mutation |
50 | 50 | from .query_groups import InfrahubGroupContext, InfrahubGroupContextSync |
51 | 51 | from .schema import InfrahubSchema, InfrahubSchemaSync, NodeSchemaAPI |
52 | 52 | from .store import NodeStore, NodeStoreSync |
53 | 53 | from .timestamp import Timestamp |
54 | 54 | from .types import AsyncRequester, HTTPMethod, SyncRequester |
55 | | -from .utils import decode_json, is_valid_uuid |
| 55 | +from .utils import decode_json, get_user_permissions, is_valid_uuid |
56 | 56 |
|
57 | 57 | if TYPE_CHECKING: |
58 | 58 | from types import TracebackType |
@@ -274,6 +274,22 @@ def _initialize(self) -> None: |
274 | 274 | self._request_method: AsyncRequester = self.config.requester or self._default_request_method |
275 | 275 | self.group_context = InfrahubGroupContext(self) |
276 | 276 |
|
| 277 | + async def get_version(self) -> str: |
| 278 | + """Return the Infrahub version.""" |
| 279 | + response = await self.execute_graphql(query="query { InfrahubInfo { version }}") |
| 280 | + version = response.get("InfrahubInfo", {}).get("version", "") |
| 281 | + return version |
| 282 | + |
| 283 | + async def get_user(self) -> dict: |
| 284 | + """Return user information""" |
| 285 | + user_info = await self.execute_graphql(query=QUERY_USER) |
| 286 | + return user_info |
| 287 | + |
| 288 | + async def get_user_permissions(self) -> dict: |
| 289 | + """Return user permissions""" |
| 290 | + user_info = await self.get_user() |
| 291 | + return get_user_permissions(user_info["AccountProfile"]["member_of_groups"]["edges"]) |
| 292 | + |
277 | 293 | @overload |
278 | 294 | async def create( |
279 | 295 | self, |
@@ -1427,6 +1443,22 @@ def _initialize(self) -> None: |
1427 | 1443 | self._request_method: SyncRequester = self.config.sync_requester or self._default_request_method |
1428 | 1444 | self.group_context = InfrahubGroupContextSync(self) |
1429 | 1445 |
|
| 1446 | + def get_version(self) -> str: |
| 1447 | + """Return the Infrahub version.""" |
| 1448 | + response = self.execute_graphql(query="query { InfrahubInfo { version }}") |
| 1449 | + version = response.get("InfrahubInfo", {}).get("version", "") |
| 1450 | + return version |
| 1451 | + |
| 1452 | + def get_user(self) -> dict: |
| 1453 | + """Return user information""" |
| 1454 | + user_info = self.execute_graphql(query=QUERY_USER) |
| 1455 | + return user_info |
| 1456 | + |
| 1457 | + def get_user_permissions(self) -> dict: |
| 1458 | + """Return user permissions""" |
| 1459 | + user_info = self.get_user() |
| 1460 | + return get_user_permissions(user_info["AccountProfile"]["member_of_groups"]["edges"]) |
| 1461 | + |
1430 | 1462 | @overload |
1431 | 1463 | def create( |
1432 | 1464 | self, |
|
0 commit comments