Skip to content

Commit eb9d47a

Browse files
authored
Use pydantic json parser instead of stdlib json.loads (#39)
1 parent 99ccfe4 commit eb9d47a

File tree

17 files changed

+65
-65
lines changed

17 files changed

+65
-65
lines changed

src/pythonxbox/api/provider/achievements/__init__.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ async def get_achievements_detail_item(
4444
**kwargs,
4545
)
4646
resp.raise_for_status()
47-
return AchievementResponse(**resp.json())
47+
return AchievementResponse.model_validate_json(resp.text)
4848

4949
async def get_achievements_xbox360_all(
5050
self, xuid: str, title_id: str, **kwargs
@@ -69,7 +69,7 @@ async def get_achievements_xbox360_all(
6969
**kwargs,
7070
)
7171
resp.raise_for_status()
72-
return Achievement360Response(**resp.json())
72+
return Achievement360Response.model_validate_json(resp.text)
7373

7474
async def get_achievements_xbox360_earned(
7575
self, xuid: str, title_id: str, **kwargs
@@ -94,7 +94,7 @@ async def get_achievements_xbox360_earned(
9494
**kwargs,
9595
)
9696
resp.raise_for_status()
97-
return Achievement360Response(**resp.json())
97+
return Achievement360Response.model_validate_json(resp.text)
9898

9999
async def get_achievements_xbox360_recent_progress_and_info(
100100
self, xuid: str, **kwargs
@@ -116,7 +116,7 @@ async def get_achievements_xbox360_recent_progress_and_info(
116116
**kwargs,
117117
)
118118
resp.raise_for_status()
119-
return Achievement360ProgressResponse(**resp.json())
119+
return Achievement360ProgressResponse.model_validate_json(resp.text)
120120

121121
async def get_achievements_xboxone_gameprogress(
122122
self, xuid: str, title_id: str, **kwargs
@@ -141,7 +141,7 @@ async def get_achievements_xboxone_gameprogress(
141141
**kwargs,
142142
)
143143
resp.raise_for_status()
144-
return AchievementResponse(**resp.json())
144+
return AchievementResponse.model_validate_json(resp.text)
145145

146146
async def get_achievements_xboxone_recent_progress_and_info(
147147
self, xuid: str, **kwargs
@@ -163,4 +163,4 @@ async def get_achievements_xboxone_recent_progress_and_info(
163163
**kwargs,
164164
)
165165
resp.raise_for_status()
166-
return RecentProgressResponse(**resp.json())
166+
return RecentProgressResponse.model_validate_json(resp.text)

src/pythonxbox/api/provider/catalog/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ async def get_products(
3636
url, params=params, include_auth=False, **kwargs
3737
)
3838
resp.raise_for_status()
39-
return CatalogResponse(**resp.json())
39+
return CatalogResponse.model_validate_json(resp.text)
4040

4141
async def get_product_from_alternate_id(
4242
self,
@@ -60,7 +60,7 @@ async def get_product_from_alternate_id(
6060
url, params=params, include_auth=False, **kwargs
6161
)
6262
resp.raise_for_status()
63-
return CatalogResponse(**resp.json())
63+
return CatalogResponse.model_validate_json(resp.text)
6464

6565
async def product_search(
6666
self,
@@ -83,4 +83,4 @@ async def product_search(
8383
url, params=params, include_auth=False, **kwargs
8484
)
8585
resp.raise_for_status()
86-
return CatalogSearchResponse(**resp.json())
86+
return CatalogSearchResponse.model_validate_json(resp.text)

src/pythonxbox/api/provider/cqs/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ async def get_channel_list(
4646
url, params=params, headers=self.HEADERS_CQS, **kwargs
4747
)
4848
resp.raise_for_status()
49-
return CqsChannelListResponse(**resp.json())
49+
return CqsChannelListResponse.model_validate_json(resp.text)
5050

5151
async def get_schedule( # noqa: PLR0913
5252
self,
@@ -84,4 +84,4 @@ async def get_schedule( # noqa: PLR0913
8484
url, params=params, headers=self.HEADERS_CQS, **kwargs
8585
)
8686
resp.raise_for_status()
87-
return CqsScheduleResponse(**resp.json())
87+
return CqsScheduleResponse.model_validate_json(resp.text)

src/pythonxbox/api/provider/gameclips/__init__.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ async def get_recent_community_clips_by_title_id(
3030
url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
3131
)
3232
resp.raise_for_status()
33-
return GameclipsResponse(**resp.json())
33+
return GameclipsResponse.model_validate_json(resp.text)
3434

3535
async def get_recent_own_clips(
3636
self,
@@ -60,7 +60,7 @@ async def get_recent_own_clips(
6060
url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
6161
)
6262
resp.raise_for_status()
63-
return GameclipsResponse(**resp.json())
63+
return GameclipsResponse.model_validate_json(resp.text)
6464

6565
async def get_recent_clips_by_xuid(
6666
self,
@@ -92,7 +92,7 @@ async def get_recent_clips_by_xuid(
9292
url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
9393
)
9494
resp.raise_for_status()
95-
return GameclipsResponse(**resp.json())
95+
return GameclipsResponse.model_validate_json(resp.text)
9696

9797
async def get_saved_community_clips_by_title_id(
9898
self, title_id: str, **kwargs
@@ -112,7 +112,7 @@ async def get_saved_community_clips_by_title_id(
112112
url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
113113
)
114114
resp.raise_for_status()
115-
return GameclipsResponse(**resp.json())
115+
return GameclipsResponse.model_validate_json(resp.text)
116116

117117
async def get_saved_own_clips(
118118
self,
@@ -142,7 +142,7 @@ async def get_saved_own_clips(
142142
url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
143143
)
144144
resp.raise_for_status()
145-
return GameclipsResponse(**resp.json())
145+
return GameclipsResponse.model_validate_json(resp.text)
146146

147147
async def get_saved_clips_by_xuid(
148148
self,
@@ -174,4 +174,4 @@ async def get_saved_clips_by_xuid(
174174
url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
175175
)
176176
resp.raise_for_status()
177-
return GameclipsResponse(**resp.json())
177+
return GameclipsResponse.model_validate_json(resp.text)

src/pythonxbox/api/provider/lists/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ async def remove_items(
3535
url, json=post_body, headers=self.HEADERS_LISTS, **kwargs
3636
)
3737
resp.raise_for_status()
38-
return ListMetadata(**resp.json())
38+
return ListMetadata.model_validate_json(resp.text)
3939

4040
async def get_items(
4141
self, xuid: str, listname: str = "XBLPins", **kwargs
@@ -53,7 +53,7 @@ async def get_items(
5353
url = self.LISTS_URL + f"/users/xuid({xuid})/lists/PINS/{listname}"
5454
resp = await self.client.session.get(url, headers=self.HEADERS_LISTS, **kwargs)
5555
resp.raise_for_status()
56-
return ListsResponse(**resp.json())
56+
return ListsResponse.model_validate_json(resp.text)
5757

5858
async def insert_items(
5959
self, xuid: str, post_body: dict, listname: str = "XBLPins", **kwargs
@@ -73,4 +73,4 @@ async def insert_items(
7373
url, json=post_body, headers=self.HEADERS_LISTS, **kwargs
7474
)
7575
resp.raise_for_status()
76-
return ListMetadata(**resp.json())
76+
return ListMetadata.model_validate_json(resp.text)

src/pythonxbox/api/provider/mediahub/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ async def fetch_own_clips(
3838
url, json=post_data, headers=self.HEADERS, **kwargs
3939
)
4040
resp.raise_for_status()
41-
return MediahubGameclips(**resp.json())
41+
return MediahubGameclips.model_validate_json(resp.text)
4242

4343
async def fetch_own_screenshots(
4444
self, skip: int = 0, count: int = 500, **kwargs
@@ -63,4 +63,4 @@ async def fetch_own_screenshots(
6363
url, json=post_data, headers=self.HEADERS, **kwargs
6464
)
6565
resp.raise_for_status()
66-
return MediahubScreenshots(**resp.json())
66+
return MediahubScreenshots.model_validate_json(resp.text)

src/pythonxbox/api/provider/message/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ async def get_inbox(self, max_items: int = 100, **kwargs) -> InboxResponse:
3535
url, params=params, headers=self.HEADERS_MESSAGE, **kwargs
3636
)
3737
resp.raise_for_status()
38-
return InboxResponse(**resp.json())
38+
return InboxResponse.model_validate_json(resp.text)
3939

4040
async def get_conversation(
4141
self, xuid: str, max_items: int = 100, **kwargs
@@ -55,7 +55,7 @@ async def get_conversation(
5555
url, params=params, headers=self.HEADERS_MESSAGE, **kwargs
5656
)
5757
resp.raise_for_status()
58-
return ConversationResponse(**resp.json())
58+
return ConversationResponse.model_validate_json(resp.text)
5959

6060
async def delete_conversation(
6161
self, conversation_id: str, horizon: str, **kwargs
@@ -139,4 +139,4 @@ async def send_message(
139139
url, json=post_data, headers=self.HEADERS_MESSAGE, **kwargs
140140
)
141141
resp.raise_for_status()
142-
return SendMessageResponse(**resp.json())
142+
return SendMessageResponse.model_validate_json(resp.text)

src/pythonxbox/api/provider/people/__init__.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ async def get_friends_own(
6262
url = f"{self.PEOPLE_URL}/users/me/people/friends/decoration/{decoration}"
6363
resp = await self.client.session.get(url, headers=self._headers, **kwargs)
6464
resp.raise_for_status()
65-
return PeopleResponse(**resp.json())
65+
return PeopleResponse.model_validate_json(resp.text)
6666

6767
async def get_friends_by_xuid(
6868
self,
@@ -88,7 +88,7 @@ async def get_friends_by_xuid(
8888
url = f"{self.PEOPLE_URL}/users/me/people/xuids({xuid})/decoration/{decoration}"
8989
resp = await self.client.session.get(url, headers=self._headers, **kwargs)
9090
resp.raise_for_status()
91-
return PeopleResponse(**resp.json())
91+
return PeopleResponse.model_validate_json(resp.text)
9292

9393
async def get_friends_own_batch(
9494
self,
@@ -119,7 +119,7 @@ async def get_friends_own_batch(
119119
url, json={"xuids": xuids}, headers=self._headers, **kwargs
120120
)
121121
resp.raise_for_status()
122-
return PeopleResponse(**resp.json())
122+
return PeopleResponse.model_validate_json(resp.text)
123123

124124
async def get_friend_recommendations(
125125
self, decoration_fields: list[PeopleDecoration] | None = None, **kwargs
@@ -139,7 +139,7 @@ async def get_friend_recommendations(
139139
)
140140
resp = await self.client.session.get(url, headers=self._headers, **kwargs)
141141
resp.raise_for_status()
142-
return PeopleResponse(**resp.json())
142+
return PeopleResponse.model_validate_json(resp.text)
143143

144144
async def get_friends_summary_own(self, **kwargs) -> PeopleSummaryResponse:
145145
"""
@@ -153,7 +153,7 @@ async def get_friends_summary_own(self, **kwargs) -> PeopleSummaryResponse:
153153
url, headers=self.HEADERS_SOCIAL, rate_limits=self.rate_limit_read, **kwargs
154154
)
155155
resp.raise_for_status()
156-
return PeopleSummaryResponse(**resp.json())
156+
return PeopleSummaryResponse.model_validate_json(resp.text)
157157

158158
async def get_friends_summary_by_xuid(
159159
self, xuid: str, **kwargs
@@ -172,7 +172,7 @@ async def get_friends_summary_by_xuid(
172172
url, headers=self.HEADERS_SOCIAL, rate_limits=self.rate_limit_read, **kwargs
173173
)
174174
resp.raise_for_status()
175-
return PeopleSummaryResponse(**resp.json())
175+
return PeopleSummaryResponse.model_validate_json(resp.text)
176176

177177
async def get_friends_summary_by_gamertag(
178178
self, gamertag: str, **kwargs
@@ -191,4 +191,4 @@ async def get_friends_summary_by_gamertag(
191191
url, headers=self.HEADERS_SOCIAL, rate_limits=self.rate_limit_read, **kwargs
192192
)
193193
resp.raise_for_status()
194-
return PeopleSummaryResponse(**resp.json())
194+
return PeopleSummaryResponse.model_validate_json(resp.text)

src/pythonxbox/api/provider/presence/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async def get_presence(
4343
url, headers=self.HEADERS_PRESENCE, **kwargs
4444
)
4545
resp.raise_for_status()
46-
return PresenceItem(**resp.json())
46+
return PresenceItem.model_validate_json(resp.text)
4747

4848
async def get_presence_batch(
4949
self,
@@ -98,7 +98,7 @@ async def get_presence_own(
9898
url, params=params, headers=self.HEADERS_PRESENCE, **kwargs
9999
)
100100
resp.raise_for_status()
101-
return PresenceItem(**resp.json())
101+
return PresenceItem.model_validate_json(resp.text)
102102

103103
async def set_presence_own(self, presence_state: PresenceState, **kwargs) -> bool:
104104
"""

src/pythonxbox/api/provider/profile/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ async def get_profiles(self, xuid_list: list[str], **kwargs) -> ProfileResponse:
5555
**kwargs,
5656
)
5757
resp.raise_for_status()
58-
return ProfileResponse(**resp.json())
58+
return ProfileResponse.model_validate_json(resp.text)
5959

6060
async def get_profile_by_xuid(self, target_xuid: str, **kwargs) -> ProfileResponse:
6161
"""
@@ -97,7 +97,7 @@ async def get_profile_by_xuid(self, target_xuid: str, **kwargs) -> ProfileRespon
9797
**kwargs,
9898
)
9999
resp.raise_for_status()
100-
return ProfileResponse(**resp.json())
100+
return ProfileResponse.model_validate_json(resp.text)
101101

102102
async def get_profile_by_gamertag(self, gamertag: str, **kwargs) -> ProfileResponse:
103103
"""
@@ -139,4 +139,4 @@ async def get_profile_by_gamertag(self, gamertag: str, **kwargs) -> ProfileRespo
139139
**kwargs,
140140
)
141141
resp.raise_for_status()
142-
return ProfileResponse(**resp.json())
142+
return ProfileResponse.model_validate_json(resp.text)

0 commit comments

Comments
 (0)