Browse Source

Add unauthed fallbacks to pomelo endpoints, remove useless http parameter (fixes #562)

pull/10109/head
Dolfies 5 months ago
parent
commit
00f6d156ca
  1. 26
      discord/client.py
  2. 136
      discord/http.py

26
discord/client.py

@ -5408,7 +5408,7 @@ class Client:
data = await state.http.join_hub(email, guild.id, code)
return state.create_guild(data['guild'])
async def pomelo_suggestion(self) -> str:
async def pomelo_suggestion(self, global_name: Optional[str] = MISSING) -> str:
"""|coro|
Gets the suggested pomelo username for your account.
@ -5417,10 +5417,16 @@ class Client:
.. note::
This method requires you to be in the pomelo rollout.
This method requires you to be in the pomelo rollout if ``global_name`` is not provided.
.. versionadded:: 2.1
Parameters
-----------
global_name: Optional[:class:`str`]
The global name to suggest a username for.
Defaults to the current user's global name, if authenticated.
Raises
-------
HTTPException
@ -5431,7 +5437,11 @@ class Client:
:class:`str`
The suggested username.
"""
data = await self.http.pomelo_suggestion()
http = self.http
if http.token and global_name is MISSING:
data = await http.pomelo_suggestion()
else:
data = await http.pomelo_suggestion_unauthed(global_name)
return data['username']
async def check_pomelo_username(self, username: str) -> bool:
@ -5439,10 +5449,6 @@ class Client:
Checks if a pomelo username is taken.
.. note::
This method requires you to be in the pomelo rollout.
.. versionadded:: 2.1
Parameters
@ -5460,5 +5466,9 @@ class Client:
:class:`bool`
Whether the username is taken.
"""
data = await self.http.pomelo_attempt(username)
http = self.http
if http.token:
data = await http.pomelo_attempt(username)
else:
data = await http.pomelo_attempt_unauthed(username)
return data['taken']

136
discord/http.py

@ -779,9 +779,6 @@ class HTTPClient:
if isinstance(props, ContextProperties):
headers['X-Context-Properties'] = props.value
if kwargs.pop('super_properties_to_track', False):
headers['X-Track'] = headers.pop('X-Super-Properties')
kwargs['headers'] = headers
# Proxy support
@ -1105,9 +1102,19 @@ class HTTPClient:
def pomelo_suggestion(self) -> Response[user.PomeloSuggestion]:
return self.request(Route('GET', '/users/@me/pomelo-suggestions'))
def pomelo_suggestion_unauthed(self, global_name: Optional[str] = None) -> Response[user.PomeloSuggestion]:
params = {}
if global_name:
params['global_name'] = global_name
return self.request(Route('GET', '/unique-username/username-suggestions-unauthed'), params=params, auth=False)
def pomelo_attempt(self, username: str) -> Response[user.PomeloAttempt]:
payload = {'username': username}
return self.request(Route('POST', '/users/@me/pomelo-attempt'), json=payload)
return self.request(Route('POST', '/users/@me/pomelo-attempt'), json=payload, auth=False)
def pomelo_attempt_unauthed(self, username: str) -> Response[user.PomeloAttempt]:
payload = {'username': username}
return self.request(Route('POST', '/unique-username/username-attempt-unauthed'), json=payload)
# PM functionality
@ -1924,7 +1931,7 @@ class HTTPClient:
def get_guilds(self, with_counts: bool = True) -> Response[List[guild.UserGuild]]:
params = {'with_counts': str(with_counts).lower()}
return self.request(Route('GET', '/users/@me/guilds'), params=params, super_properties_to_track=True)
return self.request(Route('GET', '/users/@me/guilds'), params=params)
def join_guild(
self,
@ -3004,21 +3011,17 @@ class HTTPClient:
return self.request(Route('GET', '/applications'), params=params)
def get_my_application(self, app_id: Snowflake) -> Response[application.Application]:
return self.request(Route('GET', '/applications/{app_id}', app_id=app_id), super_properties_to_track=True)
return self.request(Route('GET', '/applications/{app_id}', app_id=app_id))
def edit_application(self, app_id: Snowflake, payload: dict) -> Response[application.Application]:
return self.request(
Route('PATCH', '/applications/{app_id}', app_id=app_id), super_properties_to_track=True, json=payload
)
return self.request(Route('PATCH', '/applications/{app_id}', app_id=app_id), json=payload)
def delete_application(self, app_id: Snowflake) -> Response[None]:
return self.request(Route('POST', '/applications/{app_id}/delete', app_id=app_id), super_properties_to_track=True)
return self.request(Route('POST', '/applications/{app_id}/delete', app_id=app_id))
def transfer_application(self, app_id: Snowflake, team_id: Snowflake) -> Response[application.Application]:
payload = {'team_id': team_id}
return self.request(
Route('POST', '/applications/{app_id}/transfer', app_id=app_id), json=payload, super_properties_to_track=True
)
return self.request(Route('POST', '/applications/{app_id}/transfer', app_id=app_id), json=payload)
def get_partial_application(self, app_id: Snowflake) -> Response[application.PartialApplication]:
return self.request(Route('GET', '/oauth2/applications/{app_id}/rpc', app_id=app_id))
@ -3153,22 +3156,16 @@ class HTTPClient:
if with_bundled_skus:
params['with_bundled_skus'] = 'true'
return self.request(
Route('GET', '/applications/{app_id}/skus', app_id=app_id), params=params, super_properties_to_track=True
)
return self.request(Route('GET', '/applications/{app_id}/skus', app_id=app_id), params=params)
def create_sku(self, payload: dict) -> Response[store.PrivateSKU]:
return self.request(Route('POST', '/store/skus'), json=payload, super_properties_to_track=True)
return self.request(Route('POST', '/store/skus'), json=payload)
def get_app_discoverability(self, app_id: Snowflake) -> Response[application.ApplicationDiscoverability]:
return self.request(
Route('GET', '/applications/{app_id}/discoverability-state', app_id=app_id), super_properties_to_track=True
)
return self.request(Route('GET', '/applications/{app_id}/discoverability-state', app_id=app_id))
def get_embedded_activity_config(self, app_id: Snowflake) -> Response[application.EmbeddedActivityConfig]:
return self.request(
Route('GET', '/applications/{app_id}/embedded-activity-config', app_id=app_id), super_properties_to_track=True
)
return self.request(Route('GET', '/applications/{app_id}/embedded-activity-config', app_id=app_id))
def edit_embedded_activity_config(
self,
@ -3209,13 +3206,10 @@ class HTTPClient:
return self.request(
Route('PATCH', '/applications/{app_id}/embedded-activity-config', app_id=app_id),
json=payload,
super_properties_to_track=True,
)
def get_app_whitelisted(self, app_id: Snowflake) -> Response[List[application.WhitelistedUser]]:
return self.request(
Route('GET', '/oauth2/applications/{app_id}/allowlist', app_id=app_id), super_properties_to_track=True
)
return self.request(Route('GET', '/oauth2/applications/{app_id}/allowlist', app_id=app_id))
def add_app_whitelist(
self, app_id: Snowflake, username: str, discriminator: Snowflake
@ -3224,29 +3218,24 @@ class HTTPClient:
return self.request(
Route('POST', '/oauth2/applications/{app_id}/allowlist', app_id=app_id),
json=payload,
super_properties_to_track=True,
)
def delete_app_whitelist(self, app_id: Snowflake, user_id: Snowflake) -> Response[None]:
return self.request(
Route('DELETE', '/oauth2/applications/{app_id}/allowlist/{user_id}', app_id=app_id, user_id=user_id),
super_properties_to_track=True,
)
def get_app_assets(self, app_id: Snowflake) -> Response[List[application.Asset]]:
return self.request(Route('GET', '/oauth2/applications/{app_id}/assets', app_id=app_id))
def get_store_assets(self, app_id: Snowflake) -> Response[List[application.StoreAsset]]:
return self.request(
Route('GET', '/store/applications/{app_id}/assets', app_id=app_id), super_properties_to_track=True
)
return self.request(Route('GET', '/store/applications/{app_id}/assets', app_id=app_id))
def create_asset(self, app_id: Snowflake, name: str, type: int, image: str) -> Response[application.Asset]:
payload = {'name': name, 'type': type, 'image': image}
return self.request(
Route('POST', '/oauth2/applications/{app_id}/assets', app_id=app_id),
json=payload,
super_properties_to_track=True,
)
def create_store_asset(self, app_id: Snowflake, file: File) -> Response[application.StoreAsset]:
@ -3276,18 +3265,16 @@ class HTTPClient:
def delete_asset(self, app_id: Snowflake, asset_id: Snowflake) -> Response[None]:
return self.request(
Route('DELETE', '/oauth2/applications/{app_id}/assets/{asset_id}', app_id=app_id, asset_id=asset_id),
super_properties_to_track=True,
)
def delete_store_asset(self, app_id: Snowflake, asset_id: Snowflake) -> Response[None]:
return self.request(
Route('DELETE', '/store/applications/{app_id}/assets/{asset_id}', app_id=app_id, asset_id=asset_id),
super_properties_to_track=True,
)
def create_team(self, name: str) -> Response[team.Team]:
payload = {'name': name}
return self.request(Route('POST', '/teams'), json=payload, super_properties_to_track=True)
return self.request(Route('POST', '/teams'), json=payload)
def get_teams(self, *, include_payout_account_status: bool = False) -> Response[List[team.Team]]:
params = {}
@ -3297,46 +3284,39 @@ class HTTPClient:
return self.request(Route('GET', '/teams'), params=params)
def get_team(self, team_id: Snowflake) -> Response[team.Team]:
return self.request(Route('GET', '/teams/{team_id}', team_id=team_id), super_properties_to_track=True)
return self.request(Route('GET', '/teams/{team_id}', team_id=team_id))
def edit_team(self, team_id: Snowflake, payload: dict) -> Response[team.Team]:
return self.request(
Route('PATCH', '/teams/{team_id}', team_id=team_id), json=payload, super_properties_to_track=True
)
return self.request(Route('PATCH', '/teams/{team_id}', team_id=team_id), json=payload)
def delete_team(self, team_id: Snowflake) -> Response[None]:
return self.request(Route('POST', '/teams/{team_id}/delete', team_id=team_id), super_properties_to_track=True)
return self.request(Route('POST', '/teams/{team_id}/delete', team_id=team_id))
def get_team_applications(self, team_id: Snowflake) -> Response[List[application.Application]]:
return self.request(Route('GET', '/teams/{team_id}/applications', team_id=team_id), super_properties_to_track=True)
return self.request(Route('GET', '/teams/{team_id}/applications', team_id=team_id))
def get_team_members(self, team_id: Snowflake) -> Response[List[team.TeamMember]]:
return self.request(Route('GET', '/teams/{team_id}/members', team_id=team_id), super_properties_to_track=True)
return self.request(Route('GET', '/teams/{team_id}/members', team_id=team_id))
def invite_team_member(
self, team_id: Snowflake, username: str, discriminator: Optional[Snowflake] = None
) -> Response[team.TeamMember]:
payload = {'username': username, 'discriminator': str(discriminator) or None}
return self.request(
Route('POST', '/teams/{team_id}/members', team_id=team_id), json=payload, super_properties_to_track=True
)
return self.request(Route('POST', '/teams/{team_id}/members', team_id=team_id), json=payload)
def remove_team_member(self, team_id: Snowflake, user_id: Snowflake) -> Response[None]:
return self.request(
Route('DELETE', '/teams/{team_id}/members/{user_id}', team_id=team_id, user_id=user_id),
super_properties_to_track=True,
)
def create_team_company(self, team_id: Snowflake, name: str) -> Response[application.Company]:
payload = {'name': name}
return self.request(
Route('POST', '/teams/{team_id}/companies', team_id=team_id), json=payload, super_properties_to_track=True
)
return self.request(Route('POST', '/teams/{team_id}/companies', team_id=team_id), json=payload)
def search_companies(self, query: str) -> Response[List[application.Company]]:
# This endpoint 204s without a query?
params = {'query': query}
data = self.request(Route('GET', '/companies'), params=params, super_properties_to_track=True)
data = self.request(Route('GET', '/companies'), params=params)
return data or []
def get_team_payouts(
@ -3346,33 +3326,26 @@ class HTTPClient:
if before is not None:
params['before'] = before
return self.request(
Route('GET', '/teams/{team_id}/payouts', team_id=team_id), params=params, super_properties_to_track=True
)
return self.request(Route('GET', '/teams/{team_id}/payouts', team_id=team_id), params=params)
def get_team_payout_report(self, team_id: Snowflake, payout_id: Snowflake, type: str) -> Response[bytes]:
params = {'type': type}
return self.request(
Route('GET', '/teams/{team_id}/payouts/{payout_id}/report', team_id=team_id, payout_id=payout_id),
params=params,
super_properties_to_track=True,
)
def botify_app(self, app_id: Snowflake) -> Response[application.OptionalToken]:
return self.request(
Route('POST', '/applications/{app_id}/bot', app_id=app_id), json={}, super_properties_to_track=True
)
return self.request(Route('POST', '/applications/{app_id}/bot', app_id=app_id), json={})
def edit_bot(self, app_id: Snowflake, payload: dict) -> Response[user.User]:
return self.request(
Route('PATCH', '/applications/{app_id}/bot', app_id=app_id), json=payload, super_properties_to_track=True
)
return self.request(Route('PATCH', '/applications/{app_id}/bot', app_id=app_id), json=payload)
def reset_secret(self, app_id: Snowflake) -> Response[application.Secret]:
return self.request(Route('POST', '/applications/{app_id}/reset', app_id=app_id), super_properties_to_track=True)
return self.request(Route('POST', '/applications/{app_id}/reset', app_id=app_id))
def reset_bot_token(self, app_id: Snowflake) -> Response[application.Token]:
return self.request(Route('POST', '/applications/{app_id}/bot/reset', app_id=app_id), super_properties_to_track=True)
return self.request(Route('POST', '/applications/{app_id}/bot/reset', app_id=app_id))
def get_detectable_applications(self) -> Response[List[application.PartialApplication]]:
return self.request(Route('GET', '/applications/detectable'))
@ -3415,9 +3388,7 @@ class HTTPClient:
return self.request(Route('GET', '/activities'))
def get_app_manifest_labels(self, app_id: Snowflake) -> Response[List[application.ManifestLabel]]:
return self.request(
Route('GET', '/applications/{app_id}/manifest-labels', app_id=app_id), super_properties_to_track=True
)
return self.request(Route('GET', '/applications/{app_id}/manifest-labels', app_id=app_id))
def get_app_branches(self, app_id: Snowflake) -> Response[List[application.Branch]]:
return self.request(Route('GET', '/applications/{app_id}/branches', app_id=app_id))
@ -3710,14 +3681,12 @@ class HTTPClient:
return self.request(
Route('POST', '/store/listings'),
json={**payload, 'application_id': application_id, 'sku_id': sku_id},
super_properties_to_track=True,
)
def edit_store_listing(self, listing_id: Snowflake, payload: dict) -> Response[store.PrivateStoreListing]:
return self.request(
Route('PATCH', '/store/listings/{listing_id}', listing_id=listing_id),
json=payload,
super_properties_to_track=True,
)
def get_sku(
@ -3739,9 +3708,7 @@ class HTTPClient:
return self.request(Route('GET', '/store/skus/{sku_id}', sku_id=sku_id), params=params)
def edit_sku(self, sku_id: Snowflake, payload: dict) -> Response[store.PrivateSKU]:
return self.request(
Route('PATCH', '/store/skus/{sku_id}', sku_id=sku_id), json=payload, super_properties_to_track=True
)
return self.request(Route('PATCH', '/store/skus/{sku_id}', sku_id=sku_id), json=payload)
def preview_sku_purchase(
self,
@ -3825,12 +3792,10 @@ class HTTPClient:
if guild_id:
params['guild_id'] = guild_id
return self.request(Route('GET', '/store/price-tiers'), params=params, super_properties_to_track=True)
return self.request(Route('GET', '/store/price-tiers'), params=params)
def get_price_tier(self, price_tier: Snowflake) -> Response[Dict[str, int]]:
return self.request(
Route('GET', '/store/price-tiers/{price_tier}', price_tier=price_tier), super_properties_to_track=True
)
return self.request(Route('GET', '/store/price-tiers/{price_tier}', price_tier=price_tier))
def create_achievement(
self,
@ -3858,14 +3823,10 @@ class HTTPClient:
'secret': secret,
}
return self.request(
Route('POST', '/applications/{app_id}/achievements', app_id=app_id), json=payload, super_properties_to_track=True
)
return self.request(Route('POST', '/applications/{app_id}/achievements', app_id=app_id), json=payload)
def get_achievements(self, app_id: Snowflake) -> Response[List[application.Achievement]]:
return self.request(
Route('GET', '/applications/{app_id}/achievements', app_id=app_id), super_properties_to_track=True
)
return self.request(Route('GET', '/applications/{app_id}/achievements', app_id=app_id))
def get_my_achievements(self, app_id: Snowflake) -> Response[List[application.Achievement]]:
return self.request(Route('GET', '/users/@me/applications/{app_id}/achievements', app_id=app_id))
@ -3875,7 +3836,6 @@ class HTTPClient:
Route(
'GET', '/applications/{app_id}/achievements/{achievement_id}', app_id=app_id, achievement_id=achievement_id
),
super_properties_to_track=True,
)
def edit_achievement(
@ -3886,7 +3846,6 @@ class HTTPClient:
'PATCH', '/applications/{app_id}/achievements/{achievement_id}', app_id=app_id, achievement_id=achievement_id
),
json=payload,
super_properties_to_track=True,
)
def update_user_achievement(
@ -3913,18 +3872,14 @@ class HTTPClient:
app_id=app_id,
achievement_id=achievement_id,
),
super_properties_to_track=True,
)
def get_gift_batches(self, app_id: Snowflake) -> Response[List[entitlements.GiftBatch]]:
return self.request(
Route('GET', '/applications/{app_id}/gift-code-batches', app_id=app_id), super_properties_to_track=True
)
return self.request(Route('GET', '/applications/{app_id}/gift-code-batches', app_id=app_id))
def get_gift_batch_csv(self, app_id: Snowflake, batch_id: Snowflake) -> Response[bytes]:
return self.request(
Route('GET', '/applications/{app_id}/gift-code-batches/{batch_id}', app_id=app_id, batch_id=batch_id),
super_properties_to_track=True,
)
def create_gift_batch(
@ -3949,7 +3904,6 @@ class HTTPClient:
return self.request(
Route('POST', '/applications/{app_id}/gift-code-batches', app_id=app_id),
json=payload,
super_properties_to_track=True,
)
def get_gift(
@ -4372,10 +4326,10 @@ class HTTPClient:
self, application_id: Snowflake, channel_id: Snowflake
) -> Response[application.ActiveDeveloperResponse]:
payload = {'application_id': application_id, 'channel_id': channel_id}
return self.request(Route('POST', '/developers/active-program'), json=payload, super_properties_to_track=True)
return self.request(Route('POST', '/developers/active-program'), json=payload)
def unenroll_active_developer(self) -> Response[None]:
return self.request(Route('DELETE', '/developers/active-program'), super_properties_to_track=True)
return self.request(Route('DELETE', '/developers/active-program'))
# Misc

Loading…
Cancel
Save