prdb-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 (173) hide show
  1. prdb_sdk/__init__.py +31 -0
  2. prdb_sdk/client.py +178 -0
  3. prdb_sdk/generated/actors/actors_request_builder.py +163 -0
  4. prdb_sdk/generated/actors/batch/batch_request_builder.py +90 -0
  5. prdb_sdk/generated/actors/changes/changes_request_builder.py +112 -0
  6. prdb_sdk/generated/actors/get_sort_direction_query_parameter_type.py +6 -0
  7. prdb_sdk/generated/actors/item/actors_item_request_builder.py +82 -0
  8. prdb_sdk/generated/downloaded_from_indexers/downloaded_from_indexers_request_builder.py +108 -0
  9. prdb_sdk/generated/downloaded_from_indexers/item/filenames/filenames_request_builder.py +108 -0
  10. prdb_sdk/generated/downloaded_from_indexers/item/filenames/item/with_filename_item_request_builder.py +129 -0
  11. prdb_sdk/generated/downloaded_from_indexers/item/with_downloaded_from_indexer_item_request_builder.py +139 -0
  12. prdb_sdk/generated/favorite_actors/changes/changes_request_builder.py +112 -0
  13. prdb_sdk/generated/favorite_actors/favorite_actors_request_builder.py +145 -0
  14. prdb_sdk/generated/favorite_actors/get_sort_direction_query_parameter_type.py +6 -0
  15. prdb_sdk/generated/favorite_actors/item/with_actor_item_request_builder.py +116 -0
  16. prdb_sdk/generated/favorite_sites/changes/changes_request_builder.py +112 -0
  17. prdb_sdk/generated/favorite_sites/favorite_sites_request_builder.py +145 -0
  18. prdb_sdk/generated/favorite_sites/get_sort_direction_query_parameter_type.py +6 -0
  19. prdb_sdk/generated/favorite_sites/item/with_site_item_request_builder.py +116 -0
  20. prdb_sdk/generated/health/health_request_builder.py +75 -0
  21. prdb_sdk/generated/indexer_filehashes/changes/changes_request_builder.py +121 -0
  22. prdb_sdk/generated/indexer_filehashes/changes/get_indexer_source_query_parameter_type.py +7 -0
  23. prdb_sdk/generated/indexer_filehashes/indexer_filehashes_request_builder.py +53 -0
  24. prdb_sdk/generated/indexer_filehashes/latest/get_indexer_source_query_parameter_type.py +7 -0
  25. prdb_sdk/generated/indexer_filehashes/latest/get_sort_by_query_parameter_type.py +8 -0
  26. prdb_sdk/generated/indexer_filehashes/latest/get_sort_direction_query_parameter_type.py +6 -0
  27. prdb_sdk/generated/indexer_filehashes/latest/latest_request_builder.py +146 -0
  28. prdb_sdk/generated/indexer_filehashes/lookup/lookup_request_builder.py +90 -0
  29. prdb_sdk/generated/kiota-lock.json +35 -0
  30. prdb_sdk/generated/models/active_subscription_dto.py +60 -0
  31. prdb_sdk/generated/models/actor_alias_dto.py +52 -0
  32. prdb_sdk/generated/models/actor_bio_dto.py +52 -0
  33. prdb_sdk/generated/models/actor_change_actor_dto.py +205 -0
  34. prdb_sdk/generated/models/actor_change_alias_dto.py +52 -0
  35. prdb_sdk/generated/models/actor_change_bio_dto.py +52 -0
  36. prdb_sdk/generated/models/actor_change_dto.py +58 -0
  37. prdb_sdk/generated/models/actor_change_image_dto.py +60 -0
  38. prdb_sdk/generated/models/actor_change_link_dto.py +55 -0
  39. prdb_sdk/generated/models/actor_detail_dto.py +197 -0
  40. prdb_sdk/generated/models/actor_image_detail_dto.py +60 -0
  41. prdb_sdk/generated/models/actor_link_dto.py +55 -0
  42. prdb_sdk/generated/models/actor_summary_dto.py +85 -0
  43. prdb_sdk/generated/models/add_downloaded_from_indexer_filename_request.py +59 -0
  44. prdb_sdk/generated/models/add_downloaded_from_indexer_request.py +79 -0
  45. prdb_sdk/generated/models/add_wanted_videos_batch_request.py +48 -0
  46. prdb_sdk/generated/models/add_wanted_videos_batch_response.py +55 -0
  47. prdb_sdk/generated/models/downloaded_from_indexer_filename_dto.py +77 -0
  48. prdb_sdk/generated/models/downloaded_from_indexer_response.py +92 -0
  49. prdb_sdk/generated/models/favorite_actor_change_dto.py +58 -0
  50. prdb_sdk/generated/models/favorite_actor_change_favorite_actor_dto.py +85 -0
  51. prdb_sdk/generated/models/favorite_actor_changes_cursor_dto.py +53 -0
  52. prdb_sdk/generated/models/favorite_actor_summary_dto.py +73 -0
  53. prdb_sdk/generated/models/favorite_site_change_dto.py +58 -0
  54. prdb_sdk/generated/models/favorite_site_change_favorite_site_dto.py +81 -0
  55. prdb_sdk/generated/models/favorite_site_changes_cursor_dto.py +53 -0
  56. prdb_sdk/generated/models/favorite_site_summary_dto.py +69 -0
  57. prdb_sdk/generated/models/get_actor_changes_response.py +72 -0
  58. prdb_sdk/generated/models/get_actors_by_ids_request.py +48 -0
  59. prdb_sdk/generated/models/get_favorite_actor_changes_response.py +69 -0
  60. prdb_sdk/generated/models/get_favorite_site_changes_response.py +69 -0
  61. prdb_sdk/generated/models/get_health_response.py +52 -0
  62. prdb_sdk/generated/models/get_indexer_filehash_changes_response.py +69 -0
  63. prdb_sdk/generated/models/get_rate_limit_response.py +62 -0
  64. prdb_sdk/generated/models/get_video_filehash_changes_response.py +69 -0
  65. prdb_sdk/generated/models/get_video_filehashes_by_video_ids_request.py +48 -0
  66. prdb_sdk/generated/models/get_video_filehashes_by_video_ids_response.py +59 -0
  67. prdb_sdk/generated/models/get_video_user_image_changes_response.py +69 -0
  68. prdb_sdk/generated/models/get_videos_by_ids_request.py +48 -0
  69. prdb_sdk/generated/models/get_wanted_video_changes_response.py +69 -0
  70. prdb_sdk/generated/models/indexer_filehash_change_dto.py +58 -0
  71. prdb_sdk/generated/models/indexer_filehash_change_filehash_dto.py +97 -0
  72. prdb_sdk/generated/models/indexer_filehash_changes_cursor_dto.py +53 -0
  73. prdb_sdk/generated/models/indexer_filehash_dto.py +89 -0
  74. prdb_sdk/generated/models/indexer_filehash_lookup_key_dto.py +58 -0
  75. prdb_sdk/generated/models/indexer_filehash_lookup_key_dto_indexer_source.py +7 -0
  76. prdb_sdk/generated/models/latest_indexer_filehashes_response.py +74 -0
  77. prdb_sdk/generated/models/latest_pre_db_item_dto.py +68 -0
  78. prdb_sdk/generated/models/latest_pre_db_response.py +66 -0
  79. prdb_sdk/generated/models/latest_pre_db_site_dto.py +52 -0
  80. prdb_sdk/generated/models/latest_pre_db_video_dto.py +68 -0
  81. prdb_sdk/generated/models/latest_video_filehashes_response.py +74 -0
  82. prdb_sdk/generated/models/list_actors_response.py +78 -0
  83. prdb_sdk/generated/models/list_favorite_actors_response.py +78 -0
  84. prdb_sdk/generated/models/list_favorite_sites_response.py +78 -0
  85. prdb_sdk/generated/models/list_pre_db_response.py +74 -0
  86. prdb_sdk/generated/models/list_sites_response.py +74 -0
  87. prdb_sdk/generated/models/list_videos_response.py +74 -0
  88. prdb_sdk/generated/models/list_wanted_videos_response.py +78 -0
  89. prdb_sdk/generated/models/lookup_indexer_filehashes_request.py +75 -0
  90. prdb_sdk/generated/models/lookup_indexer_filehashes_response.py +54 -0
  91. prdb_sdk/generated/models/lookup_video_filehashes_request.py +68 -0
  92. prdb_sdk/generated/models/lookup_video_filehashes_response.py +54 -0
  93. prdb_sdk/generated/models/pre_db_item_dto.py +52 -0
  94. prdb_sdk/generated/models/pre_db_summary_dto.py +69 -0
  95. prdb_sdk/generated/models/pre_db_video_group_dto.py +71 -0
  96. prdb_sdk/generated/models/problem_details.py +70 -0
  97. prdb_sdk/generated/models/rate_limit_window_status.py +59 -0
  98. prdb_sdk/generated/models/report_video_user_image_request.py +58 -0
  99. prdb_sdk/generated/models/report_video_user_image_request_reason.py +11 -0
  100. prdb_sdk/generated/models/report_video_user_image_response.py +60 -0
  101. prdb_sdk/generated/models/search_pre_db_by_video_response.py +58 -0
  102. prdb_sdk/generated/models/site_summary_dto.py +64 -0
  103. prdb_sdk/generated/models/submit_video_user_image_response.py +60 -0
  104. prdb_sdk/generated/models/unlinked_video_filehashes_response.py +74 -0
  105. prdb_sdk/generated/models/update_downloaded_from_indexer_filename_request.py +59 -0
  106. prdb_sdk/generated/models/update_downloaded_from_indexer_request.py +63 -0
  107. prdb_sdk/generated/models/update_wanted_video_request.py +64 -0
  108. prdb_sdk/generated/models/update_wanted_video_response.py +77 -0
  109. prdb_sdk/generated/models/user_identity_response.py +58 -0
  110. prdb_sdk/generated/models/video_detail_actor_dto.py +76 -0
  111. prdb_sdk/generated/models/video_detail_actor_image_dto.py +56 -0
  112. prdb_sdk/generated/models/video_detail_dto.py +97 -0
  113. prdb_sdk/generated/models/video_detail_image_dto.py +52 -0
  114. prdb_sdk/generated/models/video_detail_network_dto.py +56 -0
  115. prdb_sdk/generated/models/video_detail_pre_name_dto.py +52 -0
  116. prdb_sdk/generated/models/video_detail_site_dto.py +67 -0
  117. prdb_sdk/generated/models/video_filehash_change_dto.py +58 -0
  118. prdb_sdk/generated/models/video_filehash_change_filehash_dto.py +93 -0
  119. prdb_sdk/generated/models/video_filehash_changes_cursor_dto.py +53 -0
  120. prdb_sdk/generated/models/video_filehash_dto.py +85 -0
  121. prdb_sdk/generated/models/video_filehashes_by_video_id_dto.py +59 -0
  122. prdb_sdk/generated/models/video_summary_actor_dto.py +52 -0
  123. prdb_sdk/generated/models/video_summary_dto.py +80 -0
  124. prdb_sdk/generated/models/video_user_image_change_item_dto.py +58 -0
  125. prdb_sdk/generated/models/video_user_image_changes_cursor_dto.py +53 -0
  126. prdb_sdk/generated/models/video_user_image_dto.py +137 -0
  127. prdb_sdk/generated/models/wanted_video_change_dto.py +58 -0
  128. prdb_sdk/generated/models/wanted_video_change_wanted_video_dto.py +105 -0
  129. prdb_sdk/generated/models/wanted_video_changes_cursor_dto.py +53 -0
  130. prdb_sdk/generated/models/wanted_video_summary_dto.py +97 -0
  131. prdb_sdk/generated/prdb_client.py +173 -0
  132. prdb_sdk/generated/predb/get_category_query_parameter_type.py +7 -0
  133. prdb_sdk/generated/predb/get_sort_by_query_parameter_type.py +6 -0
  134. prdb_sdk/generated/predb/get_sort_direction_query_parameter_type.py +6 -0
  135. prdb_sdk/generated/predb/latest/latest_request_builder.py +120 -0
  136. prdb_sdk/generated/predb/predb_request_builder.py +154 -0
  137. prdb_sdk/generated/predb/search_by_video/search_by_video_request_builder.py +107 -0
  138. prdb_sdk/generated/rate_limit/rate_limit_request_builder.py +81 -0
  139. prdb_sdk/generated/sites/get_sort_direction_query_parameter_type.py +6 -0
  140. prdb_sdk/generated/sites/sites_request_builder.py +118 -0
  141. prdb_sdk/generated/user_identity/user_identity_request_builder.py +81 -0
  142. prdb_sdk/generated/video_user_images/by_os_hash/by_os_hash_request_builder.py +38 -0
  143. prdb_sdk/generated/video_user_images/by_os_hash/item/with_based_on_file_with_os_hash_item_request_builder.py +82 -0
  144. prdb_sdk/generated/video_user_images/changes/changes_request_builder.py +112 -0
  145. prdb_sdk/generated/video_user_images/item/item_request_builder.py +92 -0
  146. prdb_sdk/generated/video_user_images/item/report/report_request_builder.py +93 -0
  147. prdb_sdk/generated/video_user_images/video_user_images_request_builder.py +129 -0
  148. prdb_sdk/generated/videos/batch/batch_request_builder.py +90 -0
  149. prdb_sdk/generated/videos/filehashes/batch/batch_request_builder.py +90 -0
  150. prdb_sdk/generated/videos/filehashes/changes/changes_request_builder.py +120 -0
  151. prdb_sdk/generated/videos/filehashes/filehashes_request_builder.py +73 -0
  152. prdb_sdk/generated/videos/filehashes/latest/get_sort_by_query_parameter_type.py +8 -0
  153. prdb_sdk/generated/videos/filehashes/latest/get_sort_direction_query_parameter_type.py +6 -0
  154. prdb_sdk/generated/videos/filehashes/latest/latest_request_builder.py +146 -0
  155. prdb_sdk/generated/videos/filehashes/lookup/lookup_request_builder.py +90 -0
  156. prdb_sdk/generated/videos/filehashes/unlinked/get_sort_by_query_parameter_type.py +8 -0
  157. prdb_sdk/generated/videos/filehashes/unlinked/get_sort_direction_query_parameter_type.py +6 -0
  158. prdb_sdk/generated/videos/filehashes/unlinked/unlinked_request_builder.py +116 -0
  159. prdb_sdk/generated/videos/get_sort_by_query_parameter_type.py +7 -0
  160. prdb_sdk/generated/videos/get_sort_direction_query_parameter_type.py +6 -0
  161. prdb_sdk/generated/videos/item/filehashes/filehashes_request_builder.py +82 -0
  162. prdb_sdk/generated/videos/item/item_request_builder.py +102 -0
  163. prdb_sdk/generated/videos/item/user_images/user_images_request_builder.py +82 -0
  164. prdb_sdk/generated/videos/videos_request_builder.py +173 -0
  165. prdb_sdk/generated/wanted_videos/batch/batch_request_builder.py +90 -0
  166. prdb_sdk/generated/wanted_videos/changes/changes_request_builder.py +112 -0
  167. prdb_sdk/generated/wanted_videos/get_sort_direction_query_parameter_type.py +6 -0
  168. prdb_sdk/generated/wanted_videos/item/with_video_item_request_builder.py +165 -0
  169. prdb_sdk/generated/wanted_videos/wanted_videos_request_builder.py +171 -0
  170. prdb_sdk-0.1.0.dist-info/METADATA +109 -0
  171. prdb_sdk-0.1.0.dist-info/RECORD +173 -0
  172. prdb_sdk-0.1.0.dist-info/WHEEL +4 -0
  173. prdb_sdk-0.1.0.dist-info/licenses/LICENSE +21 -0
prdb_sdk/__init__.py ADDED
@@ -0,0 +1,31 @@
1
+ """Python SDK for the prdb Public API.
2
+
3
+ The request builders under the returned client mirror the API's URL structure::
4
+
5
+ from prdb_sdk import create_client
6
+
7
+ client = create_client(api_key="...")
8
+ page = await client.videos.get()
9
+ video = await client.videos.by_id(video_id).get()
10
+
11
+ Everything under ``prdb_sdk.generated`` is produced by Kiota from
12
+ ``spec/openapi.json`` and is overwritten on every regeneration. Do not edit it.
13
+ """
14
+
15
+ from .client import (
16
+ API_KEY_HEADER,
17
+ DEFAULT_BASE_URL,
18
+ CrossOriginRedirectError,
19
+ PrdbClient,
20
+ create_anonymous_client,
21
+ create_client,
22
+ )
23
+
24
+ __all__ = [
25
+ "API_KEY_HEADER",
26
+ "DEFAULT_BASE_URL",
27
+ "CrossOriginRedirectError",
28
+ "PrdbClient",
29
+ "create_anonymous_client",
30
+ "create_client",
31
+ ]
prdb_sdk/client.py ADDED
@@ -0,0 +1,178 @@
1
+ """Client construction for the prdb Public API."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Optional
6
+ from urllib.parse import urlparse
7
+
8
+ import httpx
9
+ from kiota_abstractions.authentication.anonymous_authentication_provider import (
10
+ AnonymousAuthenticationProvider,
11
+ )
12
+ from kiota_abstractions.authentication.authentication_provider import (
13
+ AuthenticationProvider,
14
+ )
15
+ from kiota_abstractions.authentication.api_key_authentication_provider import (
16
+ ApiKeyAuthenticationProvider,
17
+ KeyLocation,
18
+ )
19
+ from kiota_bundle.default_request_adapter import DefaultRequestAdapter
20
+ from kiota_http.kiota_client_factory import KiotaClientFactory
21
+ from kiota_http.middleware.options import RedirectHandlerOption
22
+
23
+ from .generated.prdb_client import PrdbClient
24
+
25
+ #: Header the API expects the key in.
26
+ API_KEY_HEADER = "X-Api-Key"
27
+
28
+ #: Production base URL, also the default baked into the generated client.
29
+ DEFAULT_BASE_URL = "https://api.prdb.net"
30
+
31
+
32
+ class CrossOriginRedirectError(RuntimeError):
33
+ """Raised when the API redirects to a different origin.
34
+
35
+ Following such a redirect would hand the API key to whoever answers at the
36
+ new location, so the SDK refuses it. Redirects that stay on the same origin
37
+ are followed normally.
38
+ """
39
+
40
+
41
+ def create_client(
42
+ api_key: str,
43
+ *,
44
+ base_url: str = DEFAULT_BASE_URL,
45
+ http_client: Optional[httpx.AsyncClient] = None,
46
+ ) -> PrdbClient:
47
+ """Create a client authenticated with an API key.
48
+
49
+ Args:
50
+ api_key: The API key, sent in the ``X-Api-Key`` header on every request.
51
+ base_url: Override the API root. Useful for a staging deployment. Must
52
+ use ``https``, so the key never travels in cleartext.
53
+ http_client: Supply your own ``httpx.AsyncClient`` to control timeouts,
54
+ proxies or connection limits. One is created for you when omitted.
55
+ Either way the SDK's middleware is installed on it, which modifies
56
+ the client you pass in place.
57
+
58
+ Returns:
59
+ A client whose request builders mirror the API's URL structure, so
60
+ ``GET /videos/{id}`` is ``client.videos.by_id(video_id).get()``.
61
+
62
+ Raises:
63
+ ValueError: If ``api_key`` is empty, or ``base_url`` is not an absolute
64
+ ``https`` URL.
65
+ """
66
+ if not api_key:
67
+ raise ValueError("api_key must not be empty")
68
+
69
+ host = _resolve_host(base_url, require_https=True)
70
+
71
+ auth_provider = ApiKeyAuthenticationProvider(
72
+ key_location=KeyLocation.Header,
73
+ api_key=api_key,
74
+ parameter_name=API_KEY_HEADER,
75
+ allowed_hosts=[host],
76
+ )
77
+
78
+ return _build_client(auth_provider, base_url, http_client)
79
+
80
+
81
+ def create_anonymous_client(
82
+ *,
83
+ base_url: str = DEFAULT_BASE_URL,
84
+ http_client: Optional[httpx.AsyncClient] = None,
85
+ ) -> PrdbClient:
86
+ """Create a client without credentials.
87
+
88
+ Only ``GET /health`` is reachable this way; every other endpoint answers
89
+ 401. Provided so health probes do not need an API key.
90
+
91
+ With no key to protect, ``base_url`` may use plain ``http``.
92
+
93
+ Raises:
94
+ ValueError: If ``base_url`` is not an absolute URL.
95
+ """
96
+ _resolve_host(base_url, require_https=False)
97
+
98
+ return _build_client(AnonymousAuthenticationProvider(), base_url, http_client)
99
+
100
+
101
+ def _build_client(
102
+ auth_provider: AuthenticationProvider,
103
+ base_url: str,
104
+ http_client: Optional[httpx.AsyncClient],
105
+ ) -> PrdbClient:
106
+ request_adapter = DefaultRequestAdapter(
107
+ authentication_provider=auth_provider,
108
+ http_client=_build_http_client(http_client),
109
+ )
110
+ request_adapter.base_url = base_url
111
+
112
+ return PrdbClient(request_adapter)
113
+
114
+
115
+ def _build_http_client(http_client: Optional[httpx.AsyncClient]) -> httpx.AsyncClient:
116
+ """Load the SDK's middleware pipeline onto a client, creating one if needed.
117
+
118
+ A client handed straight to the request adapter carries no middleware at
119
+ all, which loses redirect handling, retries and Kiota's parameter name
120
+ decoding. Routing both paths through this function keeps a caller-supplied
121
+ client behaving like the one we build ourselves.
122
+ """
123
+ redirect_options = RedirectHandlerOption(
124
+ scrub_sensitive_headers=_refuse_cross_origin_redirect,
125
+ )
126
+
127
+ return KiotaClientFactory.create_with_default_middleware(
128
+ client=http_client,
129
+ options={RedirectHandlerOption.get_key(): redirect_options},
130
+ )
131
+
132
+
133
+ def _refuse_cross_origin_redirect(
134
+ new_request: httpx.Request,
135
+ original_url: httpx.URL,
136
+ ) -> None:
137
+ """Refuse a redirect that leaves the origin the request started on.
138
+
139
+ This runs in place of Kiota's default header scrubbing, which drops only
140
+ ``Authorization`` and ``Cookie``. The prdb API key travels in a custom
141
+ header, and no layer below strips it: neither Kiota's redirect handler nor
142
+ httpx's own touch anything but ``Authorization``. A redirect off the API
143
+ host would therefore hand the credential to whoever answered.
144
+
145
+ The header is removed before raising as well, so the key is gone even if a
146
+ caller catches the error and reuses the request.
147
+ """
148
+ new_url = new_request.url
149
+ same_origin = (
150
+ original_url.scheme == new_url.scheme
151
+ and original_url.host == new_url.host
152
+ and original_url.port == new_url.port
153
+ )
154
+ if same_origin:
155
+ return
156
+
157
+ new_request.headers.pop(API_KEY_HEADER, None)
158
+ new_request.headers.pop("Authorization", None)
159
+ new_request.headers.pop("Cookie", None)
160
+
161
+ raise CrossOriginRedirectError(
162
+ f"refusing to follow a redirect from {original_url.host} to "
163
+ f"{new_url.host}; the api key is bound to the first host"
164
+ )
165
+
166
+
167
+ def _resolve_host(base_url: str, *, require_https: bool) -> str:
168
+ parsed = urlparse(base_url)
169
+ if parsed.scheme not in ("http", "https") or not parsed.hostname:
170
+ raise ValueError(f"base_url must be an absolute URL, got {base_url!r}")
171
+
172
+ if require_https and parsed.scheme != "https":
173
+ raise ValueError(
174
+ f"base_url must use https so the api key is not sent in cleartext, "
175
+ f"got {base_url!r}"
176
+ )
177
+
178
+ return parsed.hostname
@@ -0,0 +1,163 @@
1
+ from __future__ import annotations
2
+ import datetime
3
+ from collections.abc import Callable
4
+ from dataclasses import dataclass, field
5
+ from kiota_abstractions.base_request_builder import BaseRequestBuilder
6
+ from kiota_abstractions.base_request_configuration import RequestConfiguration
7
+ from kiota_abstractions.default_query_parameters import QueryParameters
8
+ from kiota_abstractions.get_path_parameters import get_path_parameters
9
+ from kiota_abstractions.method import Method
10
+ from kiota_abstractions.request_adapter import RequestAdapter
11
+ from kiota_abstractions.request_information import RequestInformation
12
+ from kiota_abstractions.request_option import RequestOption
13
+ from kiota_abstractions.serialization import Parsable, ParsableFactory
14
+ from typing import Any, Optional, TYPE_CHECKING, Union
15
+ from uuid import UUID
16
+ from warnings import warn
17
+
18
+ if TYPE_CHECKING:
19
+ from ..models.list_actors_response import ListActorsResponse
20
+ from ..models.problem_details import ProblemDetails
21
+ from .batch.batch_request_builder import BatchRequestBuilder
22
+ from .changes.changes_request_builder import ChangesRequestBuilder
23
+ from .get_sort_direction_query_parameter_type import GetSortDirectionQueryParameterType
24
+ from .item.actors_item_request_builder import ActorsItemRequestBuilder
25
+
26
+ class ActorsRequestBuilder(BaseRequestBuilder):
27
+ """
28
+ Builds and executes requests for operations under /actors
29
+ """
30
+ def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
31
+ """
32
+ Instantiates a new ActorsRequestBuilder and sets the default values.
33
+ param path_parameters: The raw url or the url-template parameters for the request.
34
+ param request_adapter: The request adapter to use to execute the requests.
35
+ Returns: None
36
+ """
37
+ super().__init__(request_adapter, "{+baseurl}/actors{?CreatedAfter*,CreatedBefore*,Page*,PageSize*,Search*,SortBy*,SortDirection*}", path_parameters)
38
+
39
+ def by_id(self,id: UUID) -> ActorsItemRequestBuilder:
40
+ """
41
+ Gets an item from the prdb_sdk.generated.actors.item collection
42
+ param id: Unique identifier of the item
43
+ Returns: ActorsItemRequestBuilder
44
+ """
45
+ if id is None:
46
+ raise TypeError("id cannot be null.")
47
+ from .item.actors_item_request_builder import ActorsItemRequestBuilder
48
+
49
+ url_tpl_params = get_path_parameters(self.path_parameters)
50
+ url_tpl_params["id"] = id
51
+ return ActorsItemRequestBuilder(self.request_adapter, url_tpl_params)
52
+
53
+ async def get(self,request_configuration: Optional[RequestConfiguration[ActorsRequestBuilderGetQueryParameters]] = None) -> Optional[ListActorsResponse]:
54
+ """
55
+ Returns a paged list of actors. Supports free-text search by name or alias, and sorting by name or creation date. Default page size is 100, maximum is 500. Requires API key authentication.
56
+ param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
57
+ Returns: Optional[ListActorsResponse]
58
+ """
59
+ request_info = self.to_get_request_information(
60
+ request_configuration
61
+ )
62
+ from ..models.problem_details import ProblemDetails
63
+
64
+ error_mapping: dict[str, type[ParsableFactory]] = {
65
+ "401": ProblemDetails,
66
+ }
67
+ if not self.request_adapter:
68
+ raise Exception("Http core is null")
69
+ from ..models.list_actors_response import ListActorsResponse
70
+
71
+ return await self.request_adapter.send_async(request_info, ListActorsResponse, error_mapping)
72
+
73
+ def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[ActorsRequestBuilderGetQueryParameters]] = None) -> RequestInformation:
74
+ """
75
+ Returns a paged list of actors. Supports free-text search by name or alias, and sorting by name or creation date. Default page size is 100, maximum is 500. Requires API key authentication.
76
+ param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
77
+ Returns: RequestInformation
78
+ """
79
+ request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
80
+ request_info.configure(request_configuration)
81
+ request_info.headers.try_add("Accept", "application/json")
82
+ return request_info
83
+
84
+ def with_url(self,raw_url: str) -> ActorsRequestBuilder:
85
+ """
86
+ Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
87
+ param raw_url: The raw URL to use for the request builder.
88
+ Returns: ActorsRequestBuilder
89
+ """
90
+ if raw_url is None:
91
+ raise TypeError("raw_url cannot be null.")
92
+ return ActorsRequestBuilder(self.request_adapter, raw_url)
93
+
94
+ @property
95
+ def batch(self) -> BatchRequestBuilder:
96
+ """
97
+ The batch property
98
+ """
99
+ from .batch.batch_request_builder import BatchRequestBuilder
100
+
101
+ return BatchRequestBuilder(self.request_adapter, self.path_parameters)
102
+
103
+ @property
104
+ def changes(self) -> ChangesRequestBuilder:
105
+ """
106
+ The changes property
107
+ """
108
+ from .changes.changes_request_builder import ChangesRequestBuilder
109
+
110
+ return ChangesRequestBuilder(self.request_adapter, self.path_parameters)
111
+
112
+ @dataclass
113
+ class ActorsRequestBuilderGetQueryParameters():
114
+ """
115
+ Returns a paged list of actors. Supports free-text search by name or alias, and sorting by name or creation date. Default page size is 100, maximum is 500. Requires API key authentication.
116
+ """
117
+ def get_query_parameter(self,original_name: str) -> str:
118
+ """
119
+ Maps the query parameters names to their encoded names for the URI template parsing.
120
+ param original_name: The original query parameter name in the class.
121
+ Returns: str
122
+ """
123
+ if original_name is None:
124
+ raise TypeError("original_name cannot be null.")
125
+ if original_name == "created_after":
126
+ return "CreatedAfter"
127
+ if original_name == "created_before":
128
+ return "CreatedBefore"
129
+ if original_name == "page":
130
+ return "Page"
131
+ if original_name == "page_size":
132
+ return "PageSize"
133
+ if original_name == "search":
134
+ return "Search"
135
+ if original_name == "sort_by":
136
+ return "SortBy"
137
+ if original_name == "sort_direction":
138
+ return "SortDirection"
139
+ return original_name
140
+
141
+ created_after: Optional[datetime.datetime] = None
142
+
143
+ created_before: Optional[datetime.datetime] = None
144
+
145
+ page: Optional[int] = None
146
+
147
+ page_size: Optional[int] = None
148
+
149
+ search: Optional[str] = None
150
+
151
+ sort_by: Optional[str] = None
152
+
153
+ sort_direction: Optional[GetSortDirectionQueryParameterType] = None
154
+
155
+
156
+ @dataclass
157
+ class ActorsRequestBuilderGetRequestConfiguration(RequestConfiguration[ActorsRequestBuilderGetQueryParameters]):
158
+ """
159
+ Configuration for the request such as headers, query parameters, and middleware options.
160
+ """
161
+ warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
162
+
163
+
@@ -0,0 +1,90 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from dataclasses import dataclass, field
4
+ from kiota_abstractions.base_request_builder import BaseRequestBuilder
5
+ from kiota_abstractions.base_request_configuration import RequestConfiguration
6
+ from kiota_abstractions.default_query_parameters import QueryParameters
7
+ from kiota_abstractions.get_path_parameters import get_path_parameters
8
+ from kiota_abstractions.method import Method
9
+ from kiota_abstractions.request_adapter import RequestAdapter
10
+ from kiota_abstractions.request_information import RequestInformation
11
+ from kiota_abstractions.request_option import RequestOption
12
+ from kiota_abstractions.serialization import Parsable, ParsableFactory
13
+ from typing import Any, Optional, TYPE_CHECKING, Union
14
+ from warnings import warn
15
+
16
+ if TYPE_CHECKING:
17
+ from ...models.actor_detail_dto import ActorDetailDto
18
+ from ...models.get_actors_by_ids_request import GetActorsByIdsRequest
19
+ from ...models.problem_details import ProblemDetails
20
+
21
+ class BatchRequestBuilder(BaseRequestBuilder):
22
+ """
23
+ Builds and executes requests for operations under /actors/batch
24
+ """
25
+ def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
26
+ """
27
+ Instantiates a new BatchRequestBuilder and sets the default values.
28
+ param path_parameters: The raw url or the url-template parameters for the request.
29
+ param request_adapter: The request adapter to use to execute the requests.
30
+ Returns: None
31
+ """
32
+ super().__init__(request_adapter, "{+baseurl}/actors/batch", path_parameters)
33
+
34
+ async def post(self,body: GetActorsByIdsRequest, request_configuration: Optional[RequestConfiguration[QueryParameters]] = None) -> Optional[list[ActorDetailDto]]:
35
+ """
36
+ Returns full details for up to 50 actors by their IDs. IDs that do not exist are silently omitted from the response. Requires API key authentication.
37
+ param body: The request body
38
+ param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
39
+ Returns: Optional[list[ActorDetailDto]]
40
+ """
41
+ if body is None:
42
+ raise TypeError("body cannot be null.")
43
+ request_info = self.to_post_request_information(
44
+ body, request_configuration
45
+ )
46
+ from ...models.problem_details import ProblemDetails
47
+
48
+ error_mapping: dict[str, type[ParsableFactory]] = {
49
+ "400": ProblemDetails,
50
+ "401": ProblemDetails,
51
+ }
52
+ if not self.request_adapter:
53
+ raise Exception("Http core is null")
54
+ from ...models.actor_detail_dto import ActorDetailDto
55
+
56
+ return await self.request_adapter.send_collection_async(request_info, ActorDetailDto, error_mapping)
57
+
58
+ def to_post_request_information(self,body: GetActorsByIdsRequest, request_configuration: Optional[RequestConfiguration[QueryParameters]] = None) -> RequestInformation:
59
+ """
60
+ Returns full details for up to 50 actors by their IDs. IDs that do not exist are silently omitted from the response. Requires API key authentication.
61
+ param body: The request body
62
+ param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
63
+ Returns: RequestInformation
64
+ """
65
+ if body is None:
66
+ raise TypeError("body cannot be null.")
67
+ request_info = RequestInformation(Method.POST, self.url_template, self.path_parameters)
68
+ request_info.configure(request_configuration)
69
+ request_info.headers.try_add("Accept", "application/json")
70
+ request_info.set_content_from_parsable(self.request_adapter, "application/json", body)
71
+ return request_info
72
+
73
+ def with_url(self,raw_url: str) -> BatchRequestBuilder:
74
+ """
75
+ Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
76
+ param raw_url: The raw URL to use for the request builder.
77
+ Returns: BatchRequestBuilder
78
+ """
79
+ if raw_url is None:
80
+ raise TypeError("raw_url cannot be null.")
81
+ return BatchRequestBuilder(self.request_adapter, raw_url)
82
+
83
+ @dataclass
84
+ class BatchRequestBuilderPostRequestConfiguration(RequestConfiguration[QueryParameters]):
85
+ """
86
+ Configuration for the request such as headers, query parameters, and middleware options.
87
+ """
88
+ warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
89
+
90
+
@@ -0,0 +1,112 @@
1
+ from __future__ import annotations
2
+ import datetime
3
+ from collections.abc import Callable
4
+ from dataclasses import dataclass, field
5
+ from kiota_abstractions.base_request_builder import BaseRequestBuilder
6
+ from kiota_abstractions.base_request_configuration import RequestConfiguration
7
+ from kiota_abstractions.default_query_parameters import QueryParameters
8
+ from kiota_abstractions.get_path_parameters import get_path_parameters
9
+ from kiota_abstractions.method import Method
10
+ from kiota_abstractions.request_adapter import RequestAdapter
11
+ from kiota_abstractions.request_information import RequestInformation
12
+ from kiota_abstractions.request_option import RequestOption
13
+ from kiota_abstractions.serialization import Parsable, ParsableFactory
14
+ from typing import Any, Optional, TYPE_CHECKING, Union
15
+ from uuid import UUID
16
+ from warnings import warn
17
+
18
+ if TYPE_CHECKING:
19
+ from ...models.get_actor_changes_response import GetActorChangesResponse
20
+ from ...models.problem_details import ProblemDetails
21
+
22
+ class ChangesRequestBuilder(BaseRequestBuilder):
23
+ """
24
+ Builds and executes requests for operations under /actors/changes
25
+ """
26
+ def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
27
+ """
28
+ Instantiates a new ChangesRequestBuilder and sets the default values.
29
+ param path_parameters: The raw url or the url-template parameters for the request.
30
+ param request_adapter: The request adapter to use to execute the requests.
31
+ Returns: None
32
+ """
33
+ super().__init__(request_adapter, "{+baseurl}/actors/changes{?PageSize*,SinceId*,SinceUtc*}", path_parameters)
34
+
35
+ async def get(self,request_configuration: Optional[RequestConfiguration[ChangesRequestBuilderGetQueryParameters]] = None) -> Optional[GetActorChangesResponse]:
36
+ """
37
+ Returns created, updated, and deleted actors ordered by updatedAtUtc ascending and actor ID ascending. Continue with nextCursorUtc and nextCursorId. Page size defaults to 100 and is limited to 500. Requires API key authentication.
38
+ param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
39
+ Returns: Optional[GetActorChangesResponse]
40
+ """
41
+ request_info = self.to_get_request_information(
42
+ request_configuration
43
+ )
44
+ from ...models.problem_details import ProblemDetails
45
+
46
+ error_mapping: dict[str, type[ParsableFactory]] = {
47
+ "400": ProblemDetails,
48
+ "401": ProblemDetails,
49
+ }
50
+ if not self.request_adapter:
51
+ raise Exception("Http core is null")
52
+ from ...models.get_actor_changes_response import GetActorChangesResponse
53
+
54
+ return await self.request_adapter.send_async(request_info, GetActorChangesResponse, error_mapping)
55
+
56
+ def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[ChangesRequestBuilderGetQueryParameters]] = None) -> RequestInformation:
57
+ """
58
+ Returns created, updated, and deleted actors ordered by updatedAtUtc ascending and actor ID ascending. Continue with nextCursorUtc and nextCursorId. Page size defaults to 100 and is limited to 500. Requires API key authentication.
59
+ param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
60
+ Returns: RequestInformation
61
+ """
62
+ request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
63
+ request_info.configure(request_configuration)
64
+ request_info.headers.try_add("Accept", "application/json")
65
+ return request_info
66
+
67
+ def with_url(self,raw_url: str) -> ChangesRequestBuilder:
68
+ """
69
+ Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
70
+ param raw_url: The raw URL to use for the request builder.
71
+ Returns: ChangesRequestBuilder
72
+ """
73
+ if raw_url is None:
74
+ raise TypeError("raw_url cannot be null.")
75
+ return ChangesRequestBuilder(self.request_adapter, raw_url)
76
+
77
+ @dataclass
78
+ class ChangesRequestBuilderGetQueryParameters():
79
+ """
80
+ Returns created, updated, and deleted actors ordered by updatedAtUtc ascending and actor ID ascending. Continue with nextCursorUtc and nextCursorId. Page size defaults to 100 and is limited to 500. Requires API key authentication.
81
+ """
82
+ def get_query_parameter(self,original_name: str) -> str:
83
+ """
84
+ Maps the query parameters names to their encoded names for the URI template parsing.
85
+ param original_name: The original query parameter name in the class.
86
+ Returns: str
87
+ """
88
+ if original_name is None:
89
+ raise TypeError("original_name cannot be null.")
90
+ if original_name == "page_size":
91
+ return "PageSize"
92
+ if original_name == "since_id":
93
+ return "SinceId"
94
+ if original_name == "since_utc":
95
+ return "SinceUtc"
96
+ return original_name
97
+
98
+ page_size: Optional[int] = None
99
+
100
+ since_id: Optional[UUID] = None
101
+
102
+ since_utc: Optional[datetime.datetime] = None
103
+
104
+
105
+ @dataclass
106
+ class ChangesRequestBuilderGetRequestConfiguration(RequestConfiguration[ChangesRequestBuilderGetQueryParameters]):
107
+ """
108
+ Configuration for the request such as headers, query parameters, and middleware options.
109
+ """
110
+ warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
111
+
112
+
@@ -0,0 +1,6 @@
1
+ from enum import Enum
2
+
3
+ class GetSortDirectionQueryParameterType(str, Enum):
4
+ Asc = "asc",
5
+ Desc = "desc",
6
+
@@ -0,0 +1,82 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from dataclasses import dataclass, field
4
+ from kiota_abstractions.base_request_builder import BaseRequestBuilder
5
+ from kiota_abstractions.base_request_configuration import RequestConfiguration
6
+ from kiota_abstractions.default_query_parameters import QueryParameters
7
+ from kiota_abstractions.get_path_parameters import get_path_parameters
8
+ from kiota_abstractions.method import Method
9
+ from kiota_abstractions.request_adapter import RequestAdapter
10
+ from kiota_abstractions.request_information import RequestInformation
11
+ from kiota_abstractions.request_option import RequestOption
12
+ from kiota_abstractions.serialization import Parsable, ParsableFactory
13
+ from typing import Any, Optional, TYPE_CHECKING, Union
14
+ from warnings import warn
15
+
16
+ if TYPE_CHECKING:
17
+ from ...models.actor_detail_dto import ActorDetailDto
18
+ from ...models.problem_details import ProblemDetails
19
+
20
+ class ActorsItemRequestBuilder(BaseRequestBuilder):
21
+ """
22
+ Builds and executes requests for operations under /actors/{id}
23
+ """
24
+ def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
25
+ """
26
+ Instantiates a new ActorsItemRequestBuilder and sets the default values.
27
+ param path_parameters: The raw url or the url-template parameters for the request.
28
+ param request_adapter: The request adapter to use to execute the requests.
29
+ Returns: None
30
+ """
31
+ super().__init__(request_adapter, "{+baseurl}/actors/{id}", path_parameters)
32
+
33
+ async def get(self,request_configuration: Optional[RequestConfiguration[QueryParameters]] = None) -> Optional[ActorDetailDto]:
34
+ """
35
+ Returns full details for a single actor including all attributes, images, aliases, external links, and bios. Requires API key authentication.
36
+ param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
37
+ Returns: Optional[ActorDetailDto]
38
+ """
39
+ request_info = self.to_get_request_information(
40
+ request_configuration
41
+ )
42
+ from ...models.problem_details import ProblemDetails
43
+
44
+ error_mapping: dict[str, type[ParsableFactory]] = {
45
+ "401": ProblemDetails,
46
+ "404": ProblemDetails,
47
+ }
48
+ if not self.request_adapter:
49
+ raise Exception("Http core is null")
50
+ from ...models.actor_detail_dto import ActorDetailDto
51
+
52
+ return await self.request_adapter.send_async(request_info, ActorDetailDto, error_mapping)
53
+
54
+ def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[QueryParameters]] = None) -> RequestInformation:
55
+ """
56
+ Returns full details for a single actor including all attributes, images, aliases, external links, and bios. Requires API key authentication.
57
+ param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
58
+ Returns: RequestInformation
59
+ """
60
+ request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
61
+ request_info.configure(request_configuration)
62
+ request_info.headers.try_add("Accept", "application/json")
63
+ return request_info
64
+
65
+ def with_url(self,raw_url: str) -> ActorsItemRequestBuilder:
66
+ """
67
+ Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
68
+ param raw_url: The raw URL to use for the request builder.
69
+ Returns: ActorsItemRequestBuilder
70
+ """
71
+ if raw_url is None:
72
+ raise TypeError("raw_url cannot be null.")
73
+ return ActorsItemRequestBuilder(self.request_adapter, raw_url)
74
+
75
+ @dataclass
76
+ class ActorsItemRequestBuilderGetRequestConfiguration(RequestConfiguration[QueryParameters]):
77
+ """
78
+ Configuration for the request such as headers, query parameters, and middleware options.
79
+ """
80
+ warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
81
+
82
+