# generated by update to not change manually
import typing as t
from bungieapi.base import BaseClient
from bungieapi.forge import forge
from bungieapi.generated.components.responses import (
ListOfGetCredentialTypesForAccountClientResponse,
ListOfUserThemeClientResponse,
)
from bungieapi.generated.components.responses.user import (
GeneralUserClientResponse,
HardLinkedUserMembershipClientResponse,
UserMembershipDataClientResponse,
UserSearchClientResponse,
)
from bungieapi.generated.components.schemas import (
BungieCredentialType,
BungieMembershipType,
)
from bungieapi.generated.components.schemas.user import UserSearchPrefixRequest
[docs]class Client(BaseClient):
[docs] async def get_bungie_net_user_by_id(
self,
id: t.Optional[int] = None,
) -> GeneralUserClientResponse:
"""Loads a bungienet user by membership id.
Parameters:
id: The requested Bungie.net membership id.
"""
query = None
result = await self.get(
path=f"/User/GetBungieNetUserById/{id}/",
query=query,
)
return forge(GeneralUserClientResponse, result)
[docs] async def get_credential_types_for_target_account(
self,
membership_id: t.Optional[int] = None,
) -> ListOfGetCredentialTypesForAccountClientResponse:
"""Returns a list of credential types attached to the requested account
Parameters:
membership_id: The user's membership id"""
query = None
result = await self.get(
path=f"/User/GetCredentialTypesForTargetAccount/{membership_id}/",
query=query,
)
return forge(ListOfGetCredentialTypesForAccountClientResponse, result)
[docs] async def get_available_themes(
self,
) -> ListOfUserThemeClientResponse:
"""Returns a list of all available user themes."""
query = None
result = await self.get(
path="/User/GetAvailableThemes/",
query=query,
)
return forge(ListOfUserThemeClientResponse, result)
[docs] async def get_membership_data_by_id(
self,
membership_id: t.Optional[int] = None,
membership_type: t.Optional["BungieMembershipType"] = None,
) -> UserMembershipDataClientResponse:
"""Returns a list of accounts associated with the supplied membership
ID and membership type.
This will include all linked accounts (even when hidden) if supplied credentials permit it.
Parameters:
membership_id: The membership ID of the target user.
membership_type: Type of the supplied membership ID.
"""
query = None
result = await self.get(
path=f"/User/GetMembershipsById/{membership_id}/{membership_type}/",
query=query,
)
return forge(UserMembershipDataClientResponse, result)
[docs] async def get_membership_data_for_current_user(
self,
) -> UserMembershipDataClientResponse:
"""Returns a list of accounts associated with signed in user.
This is useful for OAuth implementations that do not give you
access to the token response.
"""
query = None
result = await self.get(
path="/User/GetMembershipsForCurrentUser/",
query=query,
)
return forge(UserMembershipDataClientResponse, result)
[docs] async def get_membership_from_hard_linked_credential(
self,
credential: t.Optional[str] = None,
cr_type: t.Optional["BungieCredentialType"] = None,
) -> HardLinkedUserMembershipClientResponse:
"""Gets any hard linked membership given a credential.
Only works for credentials that are public (just SteamID64 right now). Cross Save aware.
Parameters:
credential: The credential to look up. Must be a valid SteamID64.
cr_type: The credential type. 'SteamId' is the only valid value at present.
"""
query = None
result = await self.get(
path=f"/User/GetMembershipFromHardLinkedCredential/{cr_type}/{credential}/",
query=query,
)
return forge(HardLinkedUserMembershipClientResponse, result)
[docs] async def search_by_global_name_prefix(
self,
display_name_prefix: t.Optional[str] = None,
page: t.Optional[int] = None,
) -> UserSearchClientResponse:
"""[OBSOLETE] Do not use this to search users, use
SearchByGlobalNamePost instead.
Parameters:
display_name_prefix: The display name prefix you're looking for.
page: The zero-based page of results you desire.
"""
query = None
result = await self.get(
path=f"/User/Search/Prefix/{display_name_prefix}/{page}/",
query=query,
)
return forge(UserSearchClientResponse, result)
[docs] async def search_by_global_name_post(
self,
request: t.Optional["UserSearchPrefixRequest"],
page: t.Optional[int] = None,
) -> UserSearchClientResponse:
"""Given the prefix of a global display name, returns all users who
share that name.
Parameters:
page: The zero-based page of results you desire.
"""
query = None
result = await self.post(
path=f"/User/Search/GlobalName/{page}/", query=query, request=request
)
return forge(UserSearchClientResponse, result)