nadeshiko-sdk 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. nadeshiko/__init__.py +10 -0
  2. nadeshiko/_version.py +1 -0
  3. nadeshiko/api/__init__.py +1 -0
  4. nadeshiko/api/auth/__init__.py +3 -0
  5. nadeshiko/api/auth/internal/__init__.py +11 -0
  6. nadeshiko/api/auth/internal/get_discord_auth_url.py +176 -0
  7. nadeshiko/api/auth/internal/login.py +213 -0
  8. nadeshiko/api/auth/internal/login_discord.py +204 -0
  9. nadeshiko/api/auth/internal/login_google.py +204 -0
  10. nadeshiko/api/auth/internal/register.py +212 -0
  11. nadeshiko/api/auth_jwt/__init__.py +3 -0
  12. nadeshiko/api/auth_jwt/internal/__init__.py +7 -0
  13. nadeshiko/api/auth_jwt/internal/logout.py +151 -0
  14. nadeshiko/api/lists/__init__.py +8 -0
  15. nadeshiko/api/lists/internal/__init__.py +12 -0
  16. nadeshiko/api/lists/internal/list_add_item.py +215 -0
  17. nadeshiko/api/lists/internal/list_create.py +194 -0
  18. nadeshiko/api/lists/internal/list_destroy.py +193 -0
  19. nadeshiko/api/lists/internal/list_remove_item.py +207 -0
  20. nadeshiko/api/lists/internal/list_update.py +215 -0
  21. nadeshiko/api/lists/internal/list_update_item.py +229 -0
  22. nadeshiko/api/lists/list_index.py +257 -0
  23. nadeshiko/api/lists/list_show.py +193 -0
  24. nadeshiko/api/media/__init__.py +14 -0
  25. nadeshiko/api/media/character_show.py +193 -0
  26. nadeshiko/api/media/episode_index.py +229 -0
  27. nadeshiko/api/media/episode_show.py +207 -0
  28. nadeshiko/api/media/internal/__init__.py +16 -0
  29. nadeshiko/api/media/internal/episode_create.py +215 -0
  30. nadeshiko/api/media/internal/episode_destroy.py +205 -0
  31. nadeshiko/api/media/internal/episode_update.py +229 -0
  32. nadeshiko/api/media/internal/media_create.py +194 -0
  33. nadeshiko/api/media/internal/media_destroy.py +197 -0
  34. nadeshiko/api/media/internal/media_update.py +219 -0
  35. nadeshiko/api/media/internal/segment_create.py +229 -0
  36. nadeshiko/api/media/internal/segment_destroy.py +219 -0
  37. nadeshiko/api/media/internal/segment_index.py +243 -0
  38. nadeshiko/api/media/internal/segment_update.py +243 -0
  39. nadeshiko/api/media/media_index.py +232 -0
  40. nadeshiko/api/media/media_show.py +193 -0
  41. nadeshiko/api/media/segment_show.py +221 -0
  42. nadeshiko/api/media/segment_show_by_uuid.py +193 -0
  43. nadeshiko/api/media/seiyuu_show.py +193 -0
  44. nadeshiko/api/search/__init__.py +11 -0
  45. nadeshiko/api/search/fetch_media_info.py +278 -0
  46. nadeshiko/api/search/fetch_sentence_context.py +219 -0
  47. nadeshiko/api/search/internal/__init__.py +6 -0
  48. nadeshiko/api/search/search.py +295 -0
  49. nadeshiko/api/search/search_health_check.py +168 -0
  50. nadeshiko/api/search/search_multiple.py +238 -0
  51. nadeshiko/api/user/__init__.py +3 -0
  52. nadeshiko/api/user/internal/__init__.py +11 -0
  53. nadeshiko/api/user/internal/create_api_key.py +199 -0
  54. nadeshiko/api/user/internal/deactivate_api_key.py +194 -0
  55. nadeshiko/api/user/internal/get_api_keys.py +151 -0
  56. nadeshiko/api/user/internal/get_identity_me.py +156 -0
  57. nadeshiko/api/user/internal/get_user_info.py +156 -0
  58. nadeshiko/client.py +138 -0
  59. nadeshiko/errors.py +16 -0
  60. nadeshiko/models/__init__.py +215 -0
  61. nadeshiko/models/api_key.py +118 -0
  62. nadeshiko/models/api_key_permission.py +70 -0
  63. nadeshiko/models/auth_user.py +107 -0
  64. nadeshiko/models/basic_info.py +132 -0
  65. nadeshiko/models/category_statistic.py +71 -0
  66. nadeshiko/models/character.py +100 -0
  67. nadeshiko/models/character_input.py +130 -0
  68. nadeshiko/models/character_input_character_role.py +10 -0
  69. nadeshiko/models/character_with_media.py +124 -0
  70. nadeshiko/models/character_with_media_media_appearances_item.py +93 -0
  71. nadeshiko/models/character_with_media_media_appearances_item_role.py +10 -0
  72. nadeshiko/models/create_api_key_request.py +75 -0
  73. nadeshiko/models/create_api_key_response.py +70 -0
  74. nadeshiko/models/deactivate_api_key_request.py +62 -0
  75. nadeshiko/models/deactivate_api_key_response.py +62 -0
  76. nadeshiko/models/discord_auth_url_response.py +62 -0
  77. nadeshiko/models/discord_login_request.py +62 -0
  78. nadeshiko/models/episode.py +253 -0
  79. nadeshiko/models/episode_create_request.py +145 -0
  80. nadeshiko/models/episode_list_response.py +94 -0
  81. nadeshiko/models/episode_update_request.py +135 -0
  82. nadeshiko/models/error.py +128 -0
  83. nadeshiko/models/error_errors.py +46 -0
  84. nadeshiko/models/fetch_media_info_response.py +115 -0
  85. nadeshiko/models/fetch_media_info_type.py +10 -0
  86. nadeshiko/models/fetch_sentence_context_request.py +96 -0
  87. nadeshiko/models/fetch_sentence_context_response.py +75 -0
  88. nadeshiko/models/get_api_keys_response.py +86 -0
  89. nadeshiko/models/google_login_request.py +62 -0
  90. nadeshiko/models/list_.py +97 -0
  91. nadeshiko/models/list_add_item_body.py +69 -0
  92. nadeshiko/models/list_add_item_response_201.py +61 -0
  93. nadeshiko/models/list_create_request.py +107 -0
  94. nadeshiko/models/list_create_request_type.py +9 -0
  95. nadeshiko/models/list_create_request_visibility.py +9 -0
  96. nadeshiko/models/list_destroy_response_200.py +70 -0
  97. nadeshiko/models/list_index_type.py +9 -0
  98. nadeshiko/models/list_index_visibility.py +9 -0
  99. nadeshiko/models/list_input.py +138 -0
  100. nadeshiko/models/list_input_list_type.py +9 -0
  101. nadeshiko/models/list_input_list_visibility.py +9 -0
  102. nadeshiko/models/list_remove_item_response_200.py +61 -0
  103. nadeshiko/models/list_type.py +9 -0
  104. nadeshiko/models/list_update_body.py +78 -0
  105. nadeshiko/models/list_update_body_visibility.py +9 -0
  106. nadeshiko/models/list_update_item_body.py +61 -0
  107. nadeshiko/models/list_update_item_response_200.py +61 -0
  108. nadeshiko/models/list_visibility.py +9 -0
  109. nadeshiko/models/list_with_media.py +119 -0
  110. nadeshiko/models/list_with_media_media_item.py +83 -0
  111. nadeshiko/models/list_with_media_type.py +9 -0
  112. nadeshiko/models/list_with_media_visibility.py +9 -0
  113. nadeshiko/models/login_request.py +70 -0
  114. nadeshiko/models/login_response.py +84 -0
  115. nadeshiko/models/logout_response.py +73 -0
  116. nadeshiko/models/media.py +288 -0
  117. nadeshiko/models/media_category.py +11 -0
  118. nadeshiko/models/media_character.py +78 -0
  119. nadeshiko/models/media_character_role.py +10 -0
  120. nadeshiko/models/media_create_request.py +270 -0
  121. nadeshiko/models/media_create_request_category.py +11 -0
  122. nadeshiko/models/media_destroy_response_200.py +70 -0
  123. nadeshiko/models/media_index_category.py +9 -0
  124. nadeshiko/models/media_info_data.py +307 -0
  125. nadeshiko/models/media_info_path.py +83 -0
  126. nadeshiko/models/media_info_stats.py +89 -0
  127. nadeshiko/models/media_list_response.py +94 -0
  128. nadeshiko/models/media_update_request.py +297 -0
  129. nadeshiko/models/media_update_request_category.py +9 -0
  130. nadeshiko/models/quota_info.py +87 -0
  131. nadeshiko/models/quota_info_quota_limit_type_1.py +8 -0
  132. nadeshiko/models/register_request.py +78 -0
  133. nadeshiko/models/register_response.py +76 -0
  134. nadeshiko/models/register_response_user.py +46 -0
  135. nadeshiko/models/search_health_check_response.py +138 -0
  136. nadeshiko/models/search_multiple_request.py +72 -0
  137. nadeshiko/models/search_multiple_response.py +79 -0
  138. nadeshiko/models/search_request.py +253 -0
  139. nadeshiko/models/search_request_content_sort.py +13 -0
  140. nadeshiko/models/search_request_media_item.py +85 -0
  141. nadeshiko/models/search_request_media_item_seasons_item.py +69 -0
  142. nadeshiko/models/search_response.py +158 -0
  143. nadeshiko/models/segment.py +303 -0
  144. nadeshiko/models/segment_create_request.py +203 -0
  145. nadeshiko/models/segment_create_request_status.py +13 -0
  146. nadeshiko/models/segment_info.py +207 -0
  147. nadeshiko/models/segment_list_response.py +94 -0
  148. nadeshiko/models/segment_status.py +13 -0
  149. nadeshiko/models/segment_update_request.py +198 -0
  150. nadeshiko/models/segment_update_request_status.py +13 -0
  151. nadeshiko/models/seiyuu.py +86 -0
  152. nadeshiko/models/seiyuu_with_roles.py +108 -0
  153. nadeshiko/models/seiyuu_with_roles_roles_item.py +109 -0
  154. nadeshiko/models/seiyuu_with_roles_roles_item_role.py +10 -0
  155. nadeshiko/models/sentence.py +88 -0
  156. nadeshiko/models/statistic.py +132 -0
  157. nadeshiko/models/statistic_season_with_episode_hits.py +74 -0
  158. nadeshiko/models/statistic_season_with_episode_hits_additional_property.py +46 -0
  159. nadeshiko/models/user_info_response.py +79 -0
  160. nadeshiko/models/user_info_response_user.py +91 -0
  161. nadeshiko/models/user_role.py +71 -0
  162. nadeshiko/models/word_match.py +107 -0
  163. nadeshiko/models/word_match_media.py +98 -0
  164. nadeshiko/types.py +54 -0
  165. nadeshiko_sdk-0.1.0.dist-info/METADATA +147 -0
  166. nadeshiko_sdk-0.1.0.dist-info/RECORD +167 -0
  167. nadeshiko_sdk-0.1.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,219 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from .... import errors
8
+ from ....client import AuthenticatedClient, Client
9
+ from ....models.error import Error
10
+ from ....types import Response
11
+
12
+
13
+ def _get_kwargs(
14
+ media_id: int,
15
+ episode_number: int,
16
+ id: int,
17
+ ) -> dict[str, Any]:
18
+ _kwargs: dict[str, Any] = {
19
+ "method": "delete",
20
+ "url": "/v1/media/{media_id}/episodes/{episode_number}/segments/{id}".format(
21
+ media_id=quote(str(media_id), safe=""),
22
+ episode_number=quote(str(episode_number), safe=""),
23
+ id=quote(str(id), safe=""),
24
+ ),
25
+ }
26
+
27
+ return _kwargs
28
+
29
+
30
+ def _parse_response(
31
+ *, client: AuthenticatedClient | Client, response: httpx.Response
32
+ ) -> Any | Error | None:
33
+ if response.status_code == 204:
34
+ response_204 = cast(Any, None)
35
+ return response_204
36
+
37
+ if response.status_code == 400:
38
+ response_400 = Error.from_dict(response.json())
39
+
40
+ return response_400
41
+
42
+ if response.status_code == 401:
43
+ response_401 = Error.from_dict(response.json())
44
+
45
+ return response_401
46
+
47
+ if response.status_code == 403:
48
+ response_403 = Error.from_dict(response.json())
49
+
50
+ return response_403
51
+
52
+ if response.status_code == 404:
53
+ response_404 = Error.from_dict(response.json())
54
+
55
+ return response_404
56
+
57
+ if response.status_code == 429:
58
+ response_429 = Error.from_dict(response.json())
59
+
60
+ return response_429
61
+
62
+ if response.status_code == 500:
63
+ response_500 = Error.from_dict(response.json())
64
+
65
+ return response_500
66
+
67
+ if client.raise_on_unexpected_status:
68
+ raise errors.UnexpectedStatus(response.status_code, response.content)
69
+ else:
70
+ return None
71
+
72
+
73
+ def _build_response(
74
+ *, client: AuthenticatedClient | Client, response: httpx.Response
75
+ ) -> Response[Any | Error]:
76
+ return Response(
77
+ status_code=HTTPStatus(response.status_code),
78
+ content=response.content,
79
+ headers=response.headers,
80
+ parsed=_parse_response(client=client, response=response),
81
+ )
82
+
83
+
84
+ def sync_detailed(
85
+ media_id: int,
86
+ episode_number: int,
87
+ id: int,
88
+ *,
89
+ client: AuthenticatedClient,
90
+ ) -> Response[Any | Error]:
91
+ """Delete segment (set status to deleted)
92
+
93
+ Delete a segment by setting its status to 0 (DELETED)
94
+
95
+ Args:
96
+ media_id (int):
97
+ episode_number (int):
98
+ id (int):
99
+
100
+ Raises:
101
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
102
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
103
+
104
+ Returns:
105
+ Response[Any | Error]
106
+ """
107
+
108
+ kwargs = _get_kwargs(
109
+ media_id=media_id,
110
+ episode_number=episode_number,
111
+ id=id,
112
+ )
113
+
114
+ response = client.get_httpx_client().request(
115
+ **kwargs,
116
+ )
117
+
118
+ return _build_response(client=client, response=response)
119
+
120
+
121
+ def sync(
122
+ media_id: int,
123
+ episode_number: int,
124
+ id: int,
125
+ *,
126
+ client: AuthenticatedClient,
127
+ ) -> Any | Error | None:
128
+ """Delete segment (set status to deleted)
129
+
130
+ Delete a segment by setting its status to 0 (DELETED)
131
+
132
+ Args:
133
+ media_id (int):
134
+ episode_number (int):
135
+ id (int):
136
+
137
+ Raises:
138
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
139
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
140
+
141
+ Returns:
142
+ Any | Error
143
+ """
144
+
145
+ return sync_detailed(
146
+ media_id=media_id,
147
+ episode_number=episode_number,
148
+ id=id,
149
+ client=client,
150
+ ).parsed
151
+
152
+
153
+ async def asyncio_detailed(
154
+ media_id: int,
155
+ episode_number: int,
156
+ id: int,
157
+ *,
158
+ client: AuthenticatedClient,
159
+ ) -> Response[Any | Error]:
160
+ """Delete segment (set status to deleted)
161
+
162
+ Delete a segment by setting its status to 0 (DELETED)
163
+
164
+ Args:
165
+ media_id (int):
166
+ episode_number (int):
167
+ id (int):
168
+
169
+ Raises:
170
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
171
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
172
+
173
+ Returns:
174
+ Response[Any | Error]
175
+ """
176
+
177
+ kwargs = _get_kwargs(
178
+ media_id=media_id,
179
+ episode_number=episode_number,
180
+ id=id,
181
+ )
182
+
183
+ response = await client.get_async_httpx_client().request(**kwargs)
184
+
185
+ return _build_response(client=client, response=response)
186
+
187
+
188
+ async def asyncio(
189
+ media_id: int,
190
+ episode_number: int,
191
+ id: int,
192
+ *,
193
+ client: AuthenticatedClient,
194
+ ) -> Any | Error | None:
195
+ """Delete segment (set status to deleted)
196
+
197
+ Delete a segment by setting its status to 0 (DELETED)
198
+
199
+ Args:
200
+ media_id (int):
201
+ episode_number (int):
202
+ id (int):
203
+
204
+ Raises:
205
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
206
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
207
+
208
+ Returns:
209
+ Any | Error
210
+ """
211
+
212
+ return (
213
+ await asyncio_detailed(
214
+ media_id=media_id,
215
+ episode_number=episode_number,
216
+ id=id,
217
+ client=client,
218
+ )
219
+ ).parsed
@@ -0,0 +1,243 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from .... import errors
8
+ from ....client import AuthenticatedClient, Client
9
+ from ....models.error import Error
10
+ from ....models.segment_list_response import SegmentListResponse
11
+ from ....types import UNSET, Response, Unset
12
+
13
+
14
+ def _get_kwargs(
15
+ media_id: int,
16
+ episode_number: int,
17
+ *,
18
+ size: int | Unset = 50,
19
+ cursor: int | Unset = 0,
20
+ ) -> dict[str, Any]:
21
+ params: dict[str, Any] = {}
22
+
23
+ params["size"] = size
24
+
25
+ params["cursor"] = cursor
26
+
27
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
28
+
29
+ _kwargs: dict[str, Any] = {
30
+ "method": "get",
31
+ "url": "/v1/media/{media_id}/episodes/{episode_number}/segments".format(
32
+ media_id=quote(str(media_id), safe=""),
33
+ episode_number=quote(str(episode_number), safe=""),
34
+ ),
35
+ "params": params,
36
+ }
37
+
38
+ return _kwargs
39
+
40
+
41
+ def _parse_response(
42
+ *, client: AuthenticatedClient | Client, response: httpx.Response
43
+ ) -> Error | SegmentListResponse | None:
44
+ if response.status_code == 200:
45
+ response_200 = SegmentListResponse.from_dict(response.json())
46
+
47
+ return response_200
48
+
49
+ if response.status_code == 400:
50
+ response_400 = Error.from_dict(response.json())
51
+
52
+ return response_400
53
+
54
+ if response.status_code == 401:
55
+ response_401 = Error.from_dict(response.json())
56
+
57
+ return response_401
58
+
59
+ if response.status_code == 403:
60
+ response_403 = Error.from_dict(response.json())
61
+
62
+ return response_403
63
+
64
+ if response.status_code == 404:
65
+ response_404 = Error.from_dict(response.json())
66
+
67
+ return response_404
68
+
69
+ if response.status_code == 429:
70
+ response_429 = Error.from_dict(response.json())
71
+
72
+ return response_429
73
+
74
+ if response.status_code == 500:
75
+ response_500 = Error.from_dict(response.json())
76
+
77
+ return response_500
78
+
79
+ if client.raise_on_unexpected_status:
80
+ raise errors.UnexpectedStatus(response.status_code, response.content)
81
+ else:
82
+ return None
83
+
84
+
85
+ def _build_response(
86
+ *, client: AuthenticatedClient | Client, response: httpx.Response
87
+ ) -> Response[Error | SegmentListResponse]:
88
+ return Response(
89
+ status_code=HTTPStatus(response.status_code),
90
+ content=response.content,
91
+ headers=response.headers,
92
+ parsed=_parse_response(client=client, response=response),
93
+ )
94
+
95
+
96
+ def sync_detailed(
97
+ media_id: int,
98
+ episode_number: int,
99
+ *,
100
+ client: AuthenticatedClient,
101
+ size: int | Unset = 50,
102
+ cursor: int | Unset = 0,
103
+ ) -> Response[Error | SegmentListResponse]:
104
+ """List segments for an episode
105
+
106
+ Get a paginated list of segments for a specific episode
107
+
108
+ Args:
109
+ media_id (int):
110
+ episode_number (int):
111
+ size (int | Unset): Default: 50.
112
+ cursor (int | Unset): Default: 0.
113
+
114
+ Raises:
115
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
116
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
117
+
118
+ Returns:
119
+ Response[Error | SegmentListResponse]
120
+ """
121
+
122
+ kwargs = _get_kwargs(
123
+ media_id=media_id,
124
+ episode_number=episode_number,
125
+ size=size,
126
+ cursor=cursor,
127
+ )
128
+
129
+ response = client.get_httpx_client().request(
130
+ **kwargs,
131
+ )
132
+
133
+ return _build_response(client=client, response=response)
134
+
135
+
136
+ def sync(
137
+ media_id: int,
138
+ episode_number: int,
139
+ *,
140
+ client: AuthenticatedClient,
141
+ size: int | Unset = 50,
142
+ cursor: int | Unset = 0,
143
+ ) -> Error | SegmentListResponse | None:
144
+ """List segments for an episode
145
+
146
+ Get a paginated list of segments for a specific episode
147
+
148
+ Args:
149
+ media_id (int):
150
+ episode_number (int):
151
+ size (int | Unset): Default: 50.
152
+ cursor (int | Unset): Default: 0.
153
+
154
+ Raises:
155
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
156
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
157
+
158
+ Returns:
159
+ Error | SegmentListResponse
160
+ """
161
+
162
+ return sync_detailed(
163
+ media_id=media_id,
164
+ episode_number=episode_number,
165
+ client=client,
166
+ size=size,
167
+ cursor=cursor,
168
+ ).parsed
169
+
170
+
171
+ async def asyncio_detailed(
172
+ media_id: int,
173
+ episode_number: int,
174
+ *,
175
+ client: AuthenticatedClient,
176
+ size: int | Unset = 50,
177
+ cursor: int | Unset = 0,
178
+ ) -> Response[Error | SegmentListResponse]:
179
+ """List segments for an episode
180
+
181
+ Get a paginated list of segments for a specific episode
182
+
183
+ Args:
184
+ media_id (int):
185
+ episode_number (int):
186
+ size (int | Unset): Default: 50.
187
+ cursor (int | Unset): Default: 0.
188
+
189
+ Raises:
190
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
191
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
192
+
193
+ Returns:
194
+ Response[Error | SegmentListResponse]
195
+ """
196
+
197
+ kwargs = _get_kwargs(
198
+ media_id=media_id,
199
+ episode_number=episode_number,
200
+ size=size,
201
+ cursor=cursor,
202
+ )
203
+
204
+ response = await client.get_async_httpx_client().request(**kwargs)
205
+
206
+ return _build_response(client=client, response=response)
207
+
208
+
209
+ async def asyncio(
210
+ media_id: int,
211
+ episode_number: int,
212
+ *,
213
+ client: AuthenticatedClient,
214
+ size: int | Unset = 50,
215
+ cursor: int | Unset = 0,
216
+ ) -> Error | SegmentListResponse | None:
217
+ """List segments for an episode
218
+
219
+ Get a paginated list of segments for a specific episode
220
+
221
+ Args:
222
+ media_id (int):
223
+ episode_number (int):
224
+ size (int | Unset): Default: 50.
225
+ cursor (int | Unset): Default: 0.
226
+
227
+ Raises:
228
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
229
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
230
+
231
+ Returns:
232
+ Error | SegmentListResponse
233
+ """
234
+
235
+ return (
236
+ await asyncio_detailed(
237
+ media_id=media_id,
238
+ episode_number=episode_number,
239
+ client=client,
240
+ size=size,
241
+ cursor=cursor,
242
+ )
243
+ ).parsed
@@ -0,0 +1,243 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from .... import errors
8
+ from ....client import AuthenticatedClient, Client
9
+ from ....models.error import Error
10
+ from ....models.segment import Segment
11
+ from ....models.segment_update_request import SegmentUpdateRequest
12
+ from ....types import Response
13
+
14
+
15
+ def _get_kwargs(
16
+ media_id: int,
17
+ episode_number: int,
18
+ id: int,
19
+ *,
20
+ body: SegmentUpdateRequest,
21
+ ) -> dict[str, Any]:
22
+ headers: dict[str, Any] = {}
23
+
24
+ _kwargs: dict[str, Any] = {
25
+ "method": "patch",
26
+ "url": "/v1/media/{media_id}/episodes/{episode_number}/segments/{id}".format(
27
+ media_id=quote(str(media_id), safe=""),
28
+ episode_number=quote(str(episode_number), safe=""),
29
+ id=quote(str(id), safe=""),
30
+ ),
31
+ }
32
+
33
+ _kwargs["json"] = body.to_dict()
34
+
35
+ headers["Content-Type"] = "application/json"
36
+
37
+ _kwargs["headers"] = headers
38
+ return _kwargs
39
+
40
+
41
+ def _parse_response(
42
+ *, client: AuthenticatedClient | Client, response: httpx.Response
43
+ ) -> Error | Segment | None:
44
+ if response.status_code == 200:
45
+ response_200 = Segment.from_dict(response.json())
46
+
47
+ return response_200
48
+
49
+ if response.status_code == 400:
50
+ response_400 = Error.from_dict(response.json())
51
+
52
+ return response_400
53
+
54
+ if response.status_code == 401:
55
+ response_401 = Error.from_dict(response.json())
56
+
57
+ return response_401
58
+
59
+ if response.status_code == 403:
60
+ response_403 = Error.from_dict(response.json())
61
+
62
+ return response_403
63
+
64
+ if response.status_code == 404:
65
+ response_404 = Error.from_dict(response.json())
66
+
67
+ return response_404
68
+
69
+ if response.status_code == 429:
70
+ response_429 = Error.from_dict(response.json())
71
+
72
+ return response_429
73
+
74
+ if response.status_code == 500:
75
+ response_500 = Error.from_dict(response.json())
76
+
77
+ return response_500
78
+
79
+ if client.raise_on_unexpected_status:
80
+ raise errors.UnexpectedStatus(response.status_code, response.content)
81
+ else:
82
+ return None
83
+
84
+
85
+ def _build_response(
86
+ *, client: AuthenticatedClient | Client, response: httpx.Response
87
+ ) -> Response[Error | Segment]:
88
+ return Response(
89
+ status_code=HTTPStatus(response.status_code),
90
+ content=response.content,
91
+ headers=response.headers,
92
+ parsed=_parse_response(client=client, response=response),
93
+ )
94
+
95
+
96
+ def sync_detailed(
97
+ media_id: int,
98
+ episode_number: int,
99
+ id: int,
100
+ *,
101
+ client: AuthenticatedClient,
102
+ body: SegmentUpdateRequest,
103
+ ) -> Response[Error | Segment]:
104
+ """Update segment
105
+
106
+ Update an existing segment with partial data
107
+
108
+ Args:
109
+ media_id (int):
110
+ episode_number (int):
111
+ id (int):
112
+ body (SegmentUpdateRequest): All fields are optional for partial updates
113
+
114
+ Raises:
115
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
116
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
117
+
118
+ Returns:
119
+ Response[Error | Segment]
120
+ """
121
+
122
+ kwargs = _get_kwargs(
123
+ media_id=media_id,
124
+ episode_number=episode_number,
125
+ id=id,
126
+ body=body,
127
+ )
128
+
129
+ response = client.get_httpx_client().request(
130
+ **kwargs,
131
+ )
132
+
133
+ return _build_response(client=client, response=response)
134
+
135
+
136
+ def sync(
137
+ media_id: int,
138
+ episode_number: int,
139
+ id: int,
140
+ *,
141
+ client: AuthenticatedClient,
142
+ body: SegmentUpdateRequest,
143
+ ) -> Error | Segment | None:
144
+ """Update segment
145
+
146
+ Update an existing segment with partial data
147
+
148
+ Args:
149
+ media_id (int):
150
+ episode_number (int):
151
+ id (int):
152
+ body (SegmentUpdateRequest): All fields are optional for partial updates
153
+
154
+ Raises:
155
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
156
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
157
+
158
+ Returns:
159
+ Error | Segment
160
+ """
161
+
162
+ return sync_detailed(
163
+ media_id=media_id,
164
+ episode_number=episode_number,
165
+ id=id,
166
+ client=client,
167
+ body=body,
168
+ ).parsed
169
+
170
+
171
+ async def asyncio_detailed(
172
+ media_id: int,
173
+ episode_number: int,
174
+ id: int,
175
+ *,
176
+ client: AuthenticatedClient,
177
+ body: SegmentUpdateRequest,
178
+ ) -> Response[Error | Segment]:
179
+ """Update segment
180
+
181
+ Update an existing segment with partial data
182
+
183
+ Args:
184
+ media_id (int):
185
+ episode_number (int):
186
+ id (int):
187
+ body (SegmentUpdateRequest): All fields are optional for partial updates
188
+
189
+ Raises:
190
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
191
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
192
+
193
+ Returns:
194
+ Response[Error | Segment]
195
+ """
196
+
197
+ kwargs = _get_kwargs(
198
+ media_id=media_id,
199
+ episode_number=episode_number,
200
+ id=id,
201
+ body=body,
202
+ )
203
+
204
+ response = await client.get_async_httpx_client().request(**kwargs)
205
+
206
+ return _build_response(client=client, response=response)
207
+
208
+
209
+ async def asyncio(
210
+ media_id: int,
211
+ episode_number: int,
212
+ id: int,
213
+ *,
214
+ client: AuthenticatedClient,
215
+ body: SegmentUpdateRequest,
216
+ ) -> Error | Segment | None:
217
+ """Update segment
218
+
219
+ Update an existing segment with partial data
220
+
221
+ Args:
222
+ media_id (int):
223
+ episode_number (int):
224
+ id (int):
225
+ body (SegmentUpdateRequest): All fields are optional for partial updates
226
+
227
+ Raises:
228
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
229
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
230
+
231
+ Returns:
232
+ Error | Segment
233
+ """
234
+
235
+ return (
236
+ await asyncio_detailed(
237
+ media_id=media_id,
238
+ episode_number=episode_number,
239
+ id=id,
240
+ client=client,
241
+ body=body,
242
+ )
243
+ ).parsed