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,197 @@
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.media_destroy_response_200 import MediaDestroyResponse200
11
+ from ....types import Response
12
+
13
+
14
+ def _get_kwargs(
15
+ id: int,
16
+ ) -> dict[str, Any]:
17
+ _kwargs: dict[str, Any] = {
18
+ "method": "delete",
19
+ "url": "/v1/media/{id}".format(
20
+ id=quote(str(id), safe=""),
21
+ ),
22
+ }
23
+
24
+ return _kwargs
25
+
26
+
27
+ def _parse_response(
28
+ *, client: AuthenticatedClient | Client, response: httpx.Response
29
+ ) -> Error | MediaDestroyResponse200 | None:
30
+ if response.status_code == 200:
31
+ response_200 = MediaDestroyResponse200.from_dict(response.json())
32
+
33
+ return response_200
34
+
35
+ if response.status_code == 400:
36
+ response_400 = Error.from_dict(response.json())
37
+
38
+ return response_400
39
+
40
+ if response.status_code == 401:
41
+ response_401 = Error.from_dict(response.json())
42
+
43
+ return response_401
44
+
45
+ if response.status_code == 403:
46
+ response_403 = Error.from_dict(response.json())
47
+
48
+ return response_403
49
+
50
+ if response.status_code == 404:
51
+ response_404 = Error.from_dict(response.json())
52
+
53
+ return response_404
54
+
55
+ if response.status_code == 429:
56
+ response_429 = Error.from_dict(response.json())
57
+
58
+ return response_429
59
+
60
+ if response.status_code == 500:
61
+ response_500 = Error.from_dict(response.json())
62
+
63
+ return response_500
64
+
65
+ if client.raise_on_unexpected_status:
66
+ raise errors.UnexpectedStatus(response.status_code, response.content)
67
+ else:
68
+ return None
69
+
70
+
71
+ def _build_response(
72
+ *, client: AuthenticatedClient | Client, response: httpx.Response
73
+ ) -> Response[Error | MediaDestroyResponse200]:
74
+ return Response(
75
+ status_code=HTTPStatus(response.status_code),
76
+ content=response.content,
77
+ headers=response.headers,
78
+ parsed=_parse_response(client=client, response=response),
79
+ )
80
+
81
+
82
+ def sync_detailed(
83
+ id: int,
84
+ *,
85
+ client: AuthenticatedClient,
86
+ ) -> Response[Error | MediaDestroyResponse200]:
87
+ """Delete media (soft delete)
88
+
89
+ Soft deletes a media entry by setting the `deletedAt` timestamp. The media is not removed from the
90
+ database but is excluded from query results.
91
+
92
+ Args:
93
+ id (int): Example: 7674.
94
+
95
+ Raises:
96
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
97
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
98
+
99
+ Returns:
100
+ Response[Error | MediaDestroyResponse200]
101
+ """
102
+
103
+ kwargs = _get_kwargs(
104
+ id=id,
105
+ )
106
+
107
+ response = client.get_httpx_client().request(
108
+ **kwargs,
109
+ )
110
+
111
+ return _build_response(client=client, response=response)
112
+
113
+
114
+ def sync(
115
+ id: int,
116
+ *,
117
+ client: AuthenticatedClient,
118
+ ) -> Error | MediaDestroyResponse200 | None:
119
+ """Delete media (soft delete)
120
+
121
+ Soft deletes a media entry by setting the `deletedAt` timestamp. The media is not removed from the
122
+ database but is excluded from query results.
123
+
124
+ Args:
125
+ id (int): Example: 7674.
126
+
127
+ Raises:
128
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
129
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
130
+
131
+ Returns:
132
+ Error | MediaDestroyResponse200
133
+ """
134
+
135
+ return sync_detailed(
136
+ id=id,
137
+ client=client,
138
+ ).parsed
139
+
140
+
141
+ async def asyncio_detailed(
142
+ id: int,
143
+ *,
144
+ client: AuthenticatedClient,
145
+ ) -> Response[Error | MediaDestroyResponse200]:
146
+ """Delete media (soft delete)
147
+
148
+ Soft deletes a media entry by setting the `deletedAt` timestamp. The media is not removed from the
149
+ database but is excluded from query results.
150
+
151
+ Args:
152
+ id (int): Example: 7674.
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
+ Response[Error | MediaDestroyResponse200]
160
+ """
161
+
162
+ kwargs = _get_kwargs(
163
+ id=id,
164
+ )
165
+
166
+ response = await client.get_async_httpx_client().request(**kwargs)
167
+
168
+ return _build_response(client=client, response=response)
169
+
170
+
171
+ async def asyncio(
172
+ id: int,
173
+ *,
174
+ client: AuthenticatedClient,
175
+ ) -> Error | MediaDestroyResponse200 | None:
176
+ """Delete media (soft delete)
177
+
178
+ Soft deletes a media entry by setting the `deletedAt` timestamp. The media is not removed from the
179
+ database but is excluded from query results.
180
+
181
+ Args:
182
+ id (int): Example: 7674.
183
+
184
+ Raises:
185
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
186
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
187
+
188
+ Returns:
189
+ Error | MediaDestroyResponse200
190
+ """
191
+
192
+ return (
193
+ await asyncio_detailed(
194
+ id=id,
195
+ client=client,
196
+ )
197
+ ).parsed
@@ -0,0 +1,219 @@
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.media import Media
11
+ from ....models.media_update_request import MediaUpdateRequest
12
+ from ....types import Response
13
+
14
+
15
+ def _get_kwargs(
16
+ id: int,
17
+ *,
18
+ body: MediaUpdateRequest,
19
+ ) -> dict[str, Any]:
20
+ headers: dict[str, Any] = {}
21
+
22
+ _kwargs: dict[str, Any] = {
23
+ "method": "patch",
24
+ "url": "/v1/media/{id}".format(
25
+ id=quote(str(id), safe=""),
26
+ ),
27
+ }
28
+
29
+ _kwargs["json"] = body.to_dict()
30
+
31
+ headers["Content-Type"] = "application/json"
32
+
33
+ _kwargs["headers"] = headers
34
+ return _kwargs
35
+
36
+
37
+ def _parse_response(
38
+ *, client: AuthenticatedClient | Client, response: httpx.Response
39
+ ) -> Error | Media | None:
40
+ if response.status_code == 200:
41
+ response_200 = Media.from_dict(response.json())
42
+
43
+ return response_200
44
+
45
+ if response.status_code == 400:
46
+ response_400 = Error.from_dict(response.json())
47
+
48
+ return response_400
49
+
50
+ if response.status_code == 401:
51
+ response_401 = Error.from_dict(response.json())
52
+
53
+ return response_401
54
+
55
+ if response.status_code == 403:
56
+ response_403 = Error.from_dict(response.json())
57
+
58
+ return response_403
59
+
60
+ if response.status_code == 404:
61
+ response_404 = Error.from_dict(response.json())
62
+
63
+ return response_404
64
+
65
+ if response.status_code == 429:
66
+ response_429 = Error.from_dict(response.json())
67
+
68
+ return response_429
69
+
70
+ if response.status_code == 500:
71
+ response_500 = Error.from_dict(response.json())
72
+
73
+ return response_500
74
+
75
+ if client.raise_on_unexpected_status:
76
+ raise errors.UnexpectedStatus(response.status_code, response.content)
77
+ else:
78
+ return None
79
+
80
+
81
+ def _build_response(
82
+ *, client: AuthenticatedClient | Client, response: httpx.Response
83
+ ) -> Response[Error | Media]:
84
+ return Response(
85
+ status_code=HTTPStatus(response.status_code),
86
+ content=response.content,
87
+ headers=response.headers,
88
+ parsed=_parse_response(client=client, response=response),
89
+ )
90
+
91
+
92
+ def sync_detailed(
93
+ id: int,
94
+ *,
95
+ client: AuthenticatedClient,
96
+ body: MediaUpdateRequest,
97
+ ) -> Response[Error | Media]:
98
+ """Update media
99
+
100
+ Updates an existing media entry. All fields are optional - only provided fields will be updated.
101
+
102
+ Args:
103
+ id (int): Example: 7674.
104
+ body (MediaUpdateRequest): Request body for updating an existing media entry (all fields
105
+ optional)
106
+
107
+ Raises:
108
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
109
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
110
+
111
+ Returns:
112
+ Response[Error | Media]
113
+ """
114
+
115
+ kwargs = _get_kwargs(
116
+ id=id,
117
+ body=body,
118
+ )
119
+
120
+ response = client.get_httpx_client().request(
121
+ **kwargs,
122
+ )
123
+
124
+ return _build_response(client=client, response=response)
125
+
126
+
127
+ def sync(
128
+ id: int,
129
+ *,
130
+ client: AuthenticatedClient,
131
+ body: MediaUpdateRequest,
132
+ ) -> Error | Media | None:
133
+ """Update media
134
+
135
+ Updates an existing media entry. All fields are optional - only provided fields will be updated.
136
+
137
+ Args:
138
+ id (int): Example: 7674.
139
+ body (MediaUpdateRequest): Request body for updating an existing media entry (all fields
140
+ optional)
141
+
142
+ Raises:
143
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
144
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
145
+
146
+ Returns:
147
+ Error | Media
148
+ """
149
+
150
+ return sync_detailed(
151
+ id=id,
152
+ client=client,
153
+ body=body,
154
+ ).parsed
155
+
156
+
157
+ async def asyncio_detailed(
158
+ id: int,
159
+ *,
160
+ client: AuthenticatedClient,
161
+ body: MediaUpdateRequest,
162
+ ) -> Response[Error | Media]:
163
+ """Update media
164
+
165
+ Updates an existing media entry. All fields are optional - only provided fields will be updated.
166
+
167
+ Args:
168
+ id (int): Example: 7674.
169
+ body (MediaUpdateRequest): Request body for updating an existing media entry (all fields
170
+ optional)
171
+
172
+ Raises:
173
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
174
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
175
+
176
+ Returns:
177
+ Response[Error | Media]
178
+ """
179
+
180
+ kwargs = _get_kwargs(
181
+ id=id,
182
+ body=body,
183
+ )
184
+
185
+ response = await client.get_async_httpx_client().request(**kwargs)
186
+
187
+ return _build_response(client=client, response=response)
188
+
189
+
190
+ async def asyncio(
191
+ id: int,
192
+ *,
193
+ client: AuthenticatedClient,
194
+ body: MediaUpdateRequest,
195
+ ) -> Error | Media | None:
196
+ """Update media
197
+
198
+ Updates an existing media entry. All fields are optional - only provided fields will be updated.
199
+
200
+ Args:
201
+ id (int): Example: 7674.
202
+ body (MediaUpdateRequest): Request body for updating an existing media entry (all fields
203
+ optional)
204
+
205
+ Raises:
206
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
207
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
208
+
209
+ Returns:
210
+ Error | Media
211
+ """
212
+
213
+ return (
214
+ await asyncio_detailed(
215
+ id=id,
216
+ client=client,
217
+ body=body,
218
+ )
219
+ ).parsed
@@ -0,0 +1,229 @@
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_create_request import SegmentCreateRequest
12
+ from ....types import Response
13
+
14
+
15
+ def _get_kwargs(
16
+ media_id: int,
17
+ episode_number: int,
18
+ *,
19
+ body: SegmentCreateRequest,
20
+ ) -> dict[str, Any]:
21
+ headers: dict[str, Any] = {}
22
+
23
+ _kwargs: dict[str, Any] = {
24
+ "method": "post",
25
+ "url": "/v1/media/{media_id}/episodes/{episode_number}/segments".format(
26
+ media_id=quote(str(media_id), safe=""),
27
+ episode_number=quote(str(episode_number), safe=""),
28
+ ),
29
+ }
30
+
31
+ _kwargs["json"] = body.to_dict()
32
+
33
+ headers["Content-Type"] = "application/json"
34
+
35
+ _kwargs["headers"] = headers
36
+ return _kwargs
37
+
38
+
39
+ def _parse_response(
40
+ *, client: AuthenticatedClient | Client, response: httpx.Response
41
+ ) -> Error | Segment | None:
42
+ if response.status_code == 201:
43
+ response_201 = Segment.from_dict(response.json())
44
+
45
+ return response_201
46
+
47
+ if response.status_code == 400:
48
+ response_400 = Error.from_dict(response.json())
49
+
50
+ return response_400
51
+
52
+ if response.status_code == 401:
53
+ response_401 = Error.from_dict(response.json())
54
+
55
+ return response_401
56
+
57
+ if response.status_code == 403:
58
+ response_403 = Error.from_dict(response.json())
59
+
60
+ return response_403
61
+
62
+ if response.status_code == 404:
63
+ response_404 = Error.from_dict(response.json())
64
+
65
+ return response_404
66
+
67
+ if response.status_code == 429:
68
+ response_429 = Error.from_dict(response.json())
69
+
70
+ return response_429
71
+
72
+ if response.status_code == 500:
73
+ response_500 = Error.from_dict(response.json())
74
+
75
+ return response_500
76
+
77
+ if client.raise_on_unexpected_status:
78
+ raise errors.UnexpectedStatus(response.status_code, response.content)
79
+ else:
80
+ return None
81
+
82
+
83
+ def _build_response(
84
+ *, client: AuthenticatedClient | Client, response: httpx.Response
85
+ ) -> Response[Error | Segment]:
86
+ return Response(
87
+ status_code=HTTPStatus(response.status_code),
88
+ content=response.content,
89
+ headers=response.headers,
90
+ parsed=_parse_response(client=client, response=response),
91
+ )
92
+
93
+
94
+ def sync_detailed(
95
+ media_id: int,
96
+ episode_number: int,
97
+ *,
98
+ client: AuthenticatedClient,
99
+ body: SegmentCreateRequest,
100
+ ) -> Response[Error | Segment]:
101
+ """Create new segment
102
+
103
+ Create a new segment for a specific episode
104
+
105
+ Args:
106
+ media_id (int):
107
+ episode_number (int):
108
+ body (SegmentCreateRequest):
109
+
110
+ Raises:
111
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
112
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
113
+
114
+ Returns:
115
+ Response[Error | Segment]
116
+ """
117
+
118
+ kwargs = _get_kwargs(
119
+ media_id=media_id,
120
+ episode_number=episode_number,
121
+ body=body,
122
+ )
123
+
124
+ response = client.get_httpx_client().request(
125
+ **kwargs,
126
+ )
127
+
128
+ return _build_response(client=client, response=response)
129
+
130
+
131
+ def sync(
132
+ media_id: int,
133
+ episode_number: int,
134
+ *,
135
+ client: AuthenticatedClient,
136
+ body: SegmentCreateRequest,
137
+ ) -> Error | Segment | None:
138
+ """Create new segment
139
+
140
+ Create a new segment for a specific episode
141
+
142
+ Args:
143
+ media_id (int):
144
+ episode_number (int):
145
+ body (SegmentCreateRequest):
146
+
147
+ Raises:
148
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
149
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
150
+
151
+ Returns:
152
+ Error | Segment
153
+ """
154
+
155
+ return sync_detailed(
156
+ media_id=media_id,
157
+ episode_number=episode_number,
158
+ client=client,
159
+ body=body,
160
+ ).parsed
161
+
162
+
163
+ async def asyncio_detailed(
164
+ media_id: int,
165
+ episode_number: int,
166
+ *,
167
+ client: AuthenticatedClient,
168
+ body: SegmentCreateRequest,
169
+ ) -> Response[Error | Segment]:
170
+ """Create new segment
171
+
172
+ Create a new segment for a specific episode
173
+
174
+ Args:
175
+ media_id (int):
176
+ episode_number (int):
177
+ body (SegmentCreateRequest):
178
+
179
+ Raises:
180
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
181
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
182
+
183
+ Returns:
184
+ Response[Error | Segment]
185
+ """
186
+
187
+ kwargs = _get_kwargs(
188
+ media_id=media_id,
189
+ episode_number=episode_number,
190
+ body=body,
191
+ )
192
+
193
+ response = await client.get_async_httpx_client().request(**kwargs)
194
+
195
+ return _build_response(client=client, response=response)
196
+
197
+
198
+ async def asyncio(
199
+ media_id: int,
200
+ episode_number: int,
201
+ *,
202
+ client: AuthenticatedClient,
203
+ body: SegmentCreateRequest,
204
+ ) -> Error | Segment | None:
205
+ """Create new segment
206
+
207
+ Create a new segment for a specific episode
208
+
209
+ Args:
210
+ media_id (int):
211
+ episode_number (int):
212
+ body (SegmentCreateRequest):
213
+
214
+ Raises:
215
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
216
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
217
+
218
+ Returns:
219
+ Error | Segment
220
+ """
221
+
222
+ return (
223
+ await asyncio_detailed(
224
+ media_id=media_id,
225
+ episode_number=episode_number,
226
+ client=client,
227
+ body=body,
228
+ )
229
+ ).parsed