From 8cc2b53376cbe7f67b44c35b01be9b7ef88fdcb8 Mon Sep 17 00:00:00 2001 From: Miwory Date: Thu, 26 Feb 2026 13:24:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=85=D0=B5=D0=BB=D0=BF=D0=B5=D1=80=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B0=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/oxidetwitch/api.py | 281 +++++++++++++++++++---------------------- 1 file changed, 130 insertions(+), 151 deletions(-) diff --git a/src/oxidetwitch/api.py b/src/oxidetwitch/api.py index 2448d53..4272c4f 100644 --- a/src/oxidetwitch/api.py +++ b/src/oxidetwitch/api.py @@ -35,12 +35,15 @@ class TwitchAPIClient(OxideHTTP): proxy_url=proxy_url, ) + def _auth(self, access_token: str) -> dict[str, str]: + return {'Authorization': f'Bearer {access_token}'} + async def start_commercial( self, access_token: str, broadcaster_id: int, length: int ) -> s.StartCommercial: req = await self.post( '/channels/commercial', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json={ 'broadcaster_id': broadcaster_id, 'length': length, @@ -74,7 +77,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/channels/ads', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, }, @@ -97,7 +100,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.SnoozeNextAd: req = await self.post( '/channels/ads/schedule/snooze', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, }, @@ -132,7 +135,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/analytics/extensions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'extension_id': extension_id, @@ -186,7 +189,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/analytics/games', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'game_id': game_id, @@ -236,7 +239,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/bits/leaderboard', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'count': count, @@ -269,7 +272,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/bits/cheermotes', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict({'broadcaster_id': broadcaster_id}), ) @@ -300,7 +303,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/extensions/transactions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'extension_id': extension_id, @@ -345,7 +348,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/channels', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -388,7 +391,7 @@ class TwitchAPIClient(OxideHTTP): ) req = await self.patch( '/channels', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, json=data, ) @@ -420,7 +423,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/channels/editors', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -450,7 +453,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/channels/followed', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -499,7 +502,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/channels/followers', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -576,7 +579,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.post( '/channel_points/custom_rewards', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json=data, ) @@ -602,7 +605,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.delete( '/channel_points/custom_rewards', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id, 'id': reward_id}, ) @@ -636,7 +639,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/channel_points/custom_rewards', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -682,7 +685,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/channel_points/custom_rewards/redemptions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -770,7 +773,7 @@ class TwitchAPIClient(OxideHTTP): ) req = await self.patch( '/channel_points/custom_rewards', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id, 'id': reward_id}, json=data, ) @@ -803,7 +806,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/channel_points/custom_rewards/redemptions', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'reward_id': reward_id, @@ -841,7 +844,7 @@ class TwitchAPIClient(OxideHTTP): '/charity/campaigns', cache_ttl=cache_ttl, params={'broadcaster_id': broadcaster_id}, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), ) match req.status_code: @@ -870,7 +873,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/charity/donations', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -919,7 +922,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/chatters', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -964,7 +967,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/emotes', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -986,7 +989,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/emotes/global', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), ) match req.status_code: @@ -1011,7 +1014,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/emotes/set', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'emote_set_id': emote_set_id}, ) @@ -1037,7 +1040,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/badges', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -1059,7 +1062,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/badges/global', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), ) match req.status_code: @@ -1085,7 +1088,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/settings', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -1116,7 +1119,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/shared_chat/session', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -1146,7 +1149,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/emotes/global', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'user_id': user_id, @@ -1198,7 +1201,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.ChatSettings: req = await self.put( '/chat/settings', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -1244,7 +1247,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/chat/announcements', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -1273,7 +1276,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/chat/shoutouts', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'from_broadcaster_id': from_broadcaster_id, 'to_broadcaster_id': to_broadcaster_id, @@ -1310,7 +1313,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Message: req = await self.post( '/chat/messages', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -1349,7 +1352,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/chat/colors', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'user_id': user_id}, ) @@ -1373,7 +1376,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.put( '/chat/color', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'user_id': user_id, 'color': color}, ) @@ -1398,7 +1401,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/clips', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( {'broadcaster_id': broadcaster_id, 'has_delay': has_delay} ), @@ -1438,7 +1441,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/clips', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -1490,7 +1493,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/clips/downloads', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'editor_id': editor_id, @@ -1523,7 +1526,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/eventsub/conduits', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), ) match req.status_code: @@ -1543,7 +1546,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Conduits: req = await self.post( '/eventsub/conduits', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json={'shard_count': shard_count}, ) @@ -1564,7 +1567,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Conduits: req = await self.patch( '/eventsub/conduits', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json={'shard_count': shard_count, 'id': conduit_id}, ) @@ -1583,7 +1586,7 @@ class TwitchAPIClient(OxideHTTP): async def delete_conduit(self, access_token: str, conduit_id: str) -> bool: req = await self.delete( '/eventsub/conduits', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'id': conduit_id}, ) @@ -1613,7 +1616,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/eventsub/conduits/shards', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( {'id': conduit_id, 'status': status, 'after': after} ), @@ -1651,7 +1654,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.ConduitShards: req = await self.patch( '/eventsub/conduits/shards', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json={'conduit_id': conduit_id, 'shards': shards}, ) @@ -1707,7 +1710,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/content_classification_labels', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'locale': locale}, ) @@ -1742,7 +1745,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/entitlements/drops', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'drop_id': drop_id, @@ -1793,7 +1796,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.UpdateDropsEntitlements: req = await self.patch( '/entitlements/drops', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json=self.clean_dict( { 'entitlement_ids': entitlement_ids, @@ -1828,7 +1831,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/extensions/configurations', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {jwt_token}'}, + headers=self._auth(jwt_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -1864,7 +1867,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.put( '/extensions/configurations', - headers={'Authorization': f'Bearer {jwt_token}'}, + headers=self._auth(jwt_token), json=self.clean_dict( { 'extension_id': extension_id, @@ -1898,7 +1901,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.put( '/extensions/configurations/required', - headers={'Authorization': f'Bearer {jwt_token}'}, + headers=self._auth(jwt_token), json={ 'broadcaster_id': broadcaster_id, 'extension_id': extension_id, @@ -1930,7 +1933,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/extensions/pubsub', - headers={'Authorization': f'Bearer {jwt_token}'}, + headers=self._auth(jwt_token), json=self.clean_dict( { 'target': target, @@ -1967,7 +1970,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/extensions/live', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'extension_id': extension_id, @@ -2011,7 +2014,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/extensions/jwt/secrets', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {jwt_token}'}, + headers=self._auth(jwt_token), params={'extension_id': extension_id}, ) @@ -2032,7 +2035,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.ExtensionSecrets: req = await self.post( '/extensions/jwt/secrets', - headers={'Authorization': f'Bearer {jwt_token}'}, + headers=self._auth(jwt_token), params={'extension_id': extension_id, 'delay': delay}, ) @@ -2058,7 +2061,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/extensions/chat', - headers={'Authorization': f'Bearer {jwt_token}'}, + headers=self._auth(jwt_token), params={'broadcaster_id': broadcaster_id}, json={ 'text': text, @@ -2090,7 +2093,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/extensions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {jwt_token}'}, + headers=self._auth(jwt_token), params=self.clean_dict( { 'extension_id': extension_id, @@ -2122,7 +2125,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/extensions/released', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'extension_id': extension_id, @@ -2153,7 +2156,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/bits/extensions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'should_include_all': should_include_all, @@ -2186,7 +2189,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.ExtensionBitsProducts: req = await self.put( '/bits/extensions', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json=self.clean_dict( { 'sku': sku, @@ -2229,7 +2232,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.EventsubBaseSubscriptions: req = await self.post( '/eventsub/subscriptions', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json={ 'type': sub_type, 'version': version, @@ -2271,7 +2274,7 @@ class TwitchAPIClient(OxideHTTP): ) -> None: req = await self.delete( '/eventsub/subscriptions', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'id': sub_id}, ) @@ -2303,7 +2306,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/eventsub/subscriptions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'status': status, @@ -2355,7 +2358,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/games/top', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'first': first, @@ -2401,7 +2404,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/games', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'id': game_id, @@ -2433,7 +2436,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/creator_goals', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -2461,7 +2464,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/hypetrain/status', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -2487,7 +2490,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/moderation/enforcements/status', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -2517,7 +2520,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/moderation/automod/message', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'action': action, 'msg_id': msg_id, 'user_id': user_id}, ) @@ -2546,7 +2549,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/moderation/automod/settings', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -2583,7 +2586,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.AutomodSettings: req = await self.put( '/moderation/automod/settings', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -2628,7 +2631,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/moderation/banned', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -2675,7 +2678,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.BanUser: req = await self.post( '/moderation/banned', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -2716,7 +2719,7 @@ class TwitchAPIClient(OxideHTTP): ) -> None: req = await self.delete( '/moderation/bans', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -2761,7 +2764,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/moderation/unbans', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -2810,7 +2813,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.UnbanRequests: req = await self.patch( '/moderation/unban_requests', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -2849,7 +2852,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/moderation/blocked_terms', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -2893,7 +2896,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.BlockedTerms: req = await self.post( '/moderation/blocked_terms', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -2922,7 +2925,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.delete( '/moderation/blocked_terms', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -2952,7 +2955,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.delete( '/moderation/chat', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -2990,7 +2993,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/moderation/channels', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'user_id': user_id, @@ -3041,7 +3044,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/moderation/moderators', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -3081,7 +3084,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/moderation/moderators', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id, 'user_id': user_id}, ) @@ -3107,7 +3110,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.delete( '/moderation/moderators', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id, 'user_id': user_id}, ) @@ -3138,7 +3141,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/channels/vips', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'user_id': user_id, @@ -3178,7 +3181,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/channels/vips', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id, 'user_id': user_id}, ) @@ -3207,7 +3210,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.delete( '/channels/vips', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id, 'user_id': user_id}, ) @@ -3240,7 +3243,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.ShieldModeStatus: req = await self.put( '/moderation/shield_mode', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -3271,7 +3274,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/moderation/shield_mode', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -3300,7 +3303,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.UserWarns: req = await self.post( '/moderation/warnings', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={ 'broadcaster_id': broadcaster_id, 'moderator_id': moderator_id, @@ -3347,7 +3350,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/polls', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -3407,7 +3410,7 @@ class TwitchAPIClient(OxideHTTP): ) req = await self.post( '/polls', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json=body, ) @@ -3432,7 +3435,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Polls: req = await self.patch( '/polls', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json={ 'broadcaster_id': broadcaster_id, 'id': poll_id, @@ -3467,7 +3470,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/predictions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -3520,7 +3523,7 @@ class TwitchAPIClient(OxideHTTP): ) req = await self.post( '/predictions', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json=body, ) @@ -3547,7 +3550,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Predictions: req = await self.patch( '/predictions', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -3578,7 +3581,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Raids: req = await self.post( '/raids', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), json={ 'from_broadcaster_id': from_broadcaster_id, 'to_broadcaster_id': to_broadcaster_id, @@ -3608,7 +3611,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.patch( '/raids', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -3645,7 +3648,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/schedule', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -3696,7 +3699,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/schedule/icalendar', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -3725,7 +3728,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.patch( '/schedule/settings', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -3763,7 +3766,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Schedules: req = await self.post( '/schedule/segment', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, json=self.clean_dict( { @@ -3804,7 +3807,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Schedules: req = await self.patch( '/schedule/segment', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -3840,7 +3843,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.delete( '/schedule/segment', - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -3875,7 +3878,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/search/categories', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( {'query': query, 'first': first, 'after': after} ), @@ -3920,7 +3923,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/search/channels', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'query': query, @@ -3965,7 +3968,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/streams/key', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -4000,7 +4003,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/streams', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'user_id': user_id, @@ -4053,7 +4056,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/streams/followed', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'user_id': user_id, @@ -4096,9 +4099,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.CreateStreamMarkers: req = await self.post( '/streams/markers', - headers={ - 'Authorization': f'Bearer {access_token}', - }, + headers=self._auth(access_token), json=self.clean_dict( { 'user_id': user_id, @@ -4137,7 +4138,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/streams/markers', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'user_id': user_id, @@ -4193,7 +4194,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/subscriptions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -4245,7 +4246,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/subscriptions/user', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -4276,7 +4277,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/teams/channel', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'broadcaster_id': broadcaster_id}, ) @@ -4303,7 +4304,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/teams', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict({'name': name, 'id': team_id}), ) @@ -4330,7 +4331,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/users', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict({'id': user_id, 'login': login}), ) @@ -4351,11 +4352,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.Users: req = await self.put( '/users', - headers=self.clean_dict( - { - 'Authorization': f'Bearer {access_token}', - } - ), + headers=self._auth(access_token), json={'description': description}, ) @@ -4381,7 +4378,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/authorization/users', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'user_id': user_id}, ) @@ -4416,7 +4413,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/users/blocks', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'broadcaster_id': broadcaster_id, @@ -4460,11 +4457,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.put( '/users/blocks', - headers=self.clean_dict( - { - 'Authorization': f'Bearer {access_token}', - } - ), + headers=self._auth(access_token), json=self.clean_dict( { 'target_user_id': target_user_id, @@ -4491,11 +4484,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.delete( '/users/blocks', - headers=self.clean_dict( - { - 'Authorization': f'Bearer {access_token}', - } - ), + headers=self._auth(access_token), params={'target_user_id': target_user_id}, ) @@ -4517,7 +4506,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/users/extensions/list', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), ) match req.status_code: @@ -4542,7 +4531,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/users/extensions', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params={'user_id': user_id}, ) @@ -4563,9 +4552,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.put( '/users/extensions', - headers={ - 'Authorization': f'Bearer {access_token}', - }, + headers=self._auth(access_token), json=extensions.model_dump(), ) @@ -4601,7 +4588,7 @@ class TwitchAPIClient(OxideHTTP): req = await self.get( '/videos', cache_ttl=cache_ttl, - headers={'Authorization': f'Bearer {access_token}'}, + headers=self._auth(access_token), params=self.clean_dict( { 'video_id': video_id, @@ -4646,11 +4633,7 @@ class TwitchAPIClient(OxideHTTP): ) -> s.DeleteVideos: req = await self.delete( '/videos', - headers=self.clean_dict( - { - 'Authorization': f'Bearer {access_token}', - } - ), + headers=self._auth(access_token), params={'id': video_id}, ) @@ -4675,11 +4658,7 @@ class TwitchAPIClient(OxideHTTP): ) -> bool: req = await self.post( '/whispers', - headers=self.clean_dict( - { - 'Authorization': f'Bearer {access_token}', - } - ), + headers=self._auth(access_token), params={'from_user_id': from_user_id, 'to_user_id': to_user_id}, json={'message': message}, )