Skip to content

Commit 141a927

Browse files
feat(api): fix(cdn): harmonize pagination across CDN list endpoints
Mark CDN resource rules, shields, and rule templates list endpoints with `paginated: false` to align with how other CDN endpoints handle pagination, since these return full arrays rather than paginated responses.
1 parent 3f4d832 commit 141a927

9 files changed

Lines changed: 193 additions & 142 deletions

File tree

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 658
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-2c51dec6cb0178c3e94e32aaf2ccb1627fdc815fa181a2c053861e1ccf1392bb.yml
33
openapi_spec_hash: a763e3bba4d1827b1ebf28b59ceebfe4
4-
config_hash: 783d3945b23f1d5cf64f8fba8e44c9d7
4+
config_hash: a8091c31251bc8979abd6db1f2c88983

src/gcore/resources/cdn/api.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Methods:
6969

7070
- <code title="post /cdn/resources/{resource_id}/rules">client.cdn.cdn_resources.rules.<a href="./src/gcore/resources/cdn/cdn_resources/rules.py">create</a>(resource_id, \*\*<a href="src/gcore/types/cdn/cdn_resources/rule_create_params.py">params</a>) -> <a href="./src/gcore/types/cdn/cdn_resources/cdn_resource_rule.py">CDNResourceRule</a></code>
7171
- <code title="patch /cdn/resources/{resource_id}/rules/{rule_id}">client.cdn.cdn_resources.rules.<a href="./src/gcore/resources/cdn/cdn_resources/rules.py">update</a>(rule_id, \*, resource_id, \*\*<a href="src/gcore/types/cdn/cdn_resources/rule_update_params.py">params</a>) -> <a href="./src/gcore/types/cdn/cdn_resources/cdn_resource_rule.py">CDNResourceRule</a></code>
72-
- <code title="get /cdn/resources/{resource_id}/rules">client.cdn.cdn_resources.rules.<a href="./src/gcore/resources/cdn/cdn_resources/rules.py">list</a>(resource_id, \*\*<a href="src/gcore/types/cdn/cdn_resources/rule_list_params.py">params</a>) -> <a href="./src/gcore/types/cdn/cdn_resources/cdn_resource_rule.py">SyncOffsetPage[CDNResourceRule]</a></code>
72+
- <code title="get /cdn/resources/{resource_id}/rules">client.cdn.cdn_resources.rules.<a href="./src/gcore/resources/cdn/cdn_resources/rules.py">list</a>(resource_id, \*\*<a href="src/gcore/types/cdn/cdn_resources/rule_list_params.py">params</a>) -> <a href="./src/gcore/types/cdn/cdn_resources/cdn_resource_rule_list.py">CDNResourceRuleList</a></code>
7373
- <code title="delete /cdn/resources/{resource_id}/rules/{rule_id}">client.cdn.cdn_resources.rules.<a href="./src/gcore/resources/cdn/cdn_resources/rules.py">delete</a>(rule_id, \*, resource_id) -> None</code>
7474
- <code title="get /cdn/resources/{resource_id}/rules/{rule_id}">client.cdn.cdn_resources.rules.<a href="./src/gcore/resources/cdn/cdn_resources/rules.py">get</a>(rule_id, \*, resource_id) -> <a href="./src/gcore/types/cdn/cdn_resources/cdn_resource_rule.py">CDNResourceRule</a></code>
7575
- <code title="put /cdn/resources/{resource_id}/rules/{rule_id}">client.cdn.cdn_resources.rules.<a href="./src/gcore/resources/cdn/cdn_resources/rules.py">replace</a>(rule_id, \*, resource_id, \*\*<a href="src/gcore/types/cdn/cdn_resources/rule_replace_params.py">params</a>) -> <a href="./src/gcore/types/cdn/cdn_resources/cdn_resource_rule.py">CDNResourceRule</a></code>
@@ -84,7 +84,7 @@ from gcore.types.cdn import ShieldListResponse
8484

8585
Methods:
8686

87-
- <code title="get /cdn/shieldingpop_v2">client.cdn.shields.<a href="./src/gcore/resources/cdn/shields.py">list</a>(\*\*<a href="src/gcore/types/cdn/shield_list_params.py">params</a>) -> <a href="./src/gcore/types/cdn/shield_list_response.py">SyncOffsetPage[ShieldListResponse]</a></code>
87+
- <code title="get /cdn/shieldingpop_v2">client.cdn.shields.<a href="./src/gcore/resources/cdn/shields.py">list</a>(\*\*<a href="src/gcore/types/cdn/shield_list_params.py">params</a>) -> <a href="./src/gcore/types/cdn/shield_list_response.py">ShieldListResponse</a></code>
8888

8989
## OriginGroups
9090

@@ -115,7 +115,7 @@ Methods:
115115

116116
- <code title="post /cdn/resources/rule_templates">client.cdn.rule_templates.<a href="./src/gcore/resources/cdn/rule_templates.py">create</a>(\*\*<a href="src/gcore/types/cdn/rule_template_create_params.py">params</a>) -> <a href="./src/gcore/types/cdn/rule_template.py">RuleTemplate</a></code>
117117
- <code title="patch /cdn/resources/rule_templates/{rule_template_id}">client.cdn.rule_templates.<a href="./src/gcore/resources/cdn/rule_templates.py">update</a>(rule_template_id, \*\*<a href="src/gcore/types/cdn/rule_template_update_params.py">params</a>) -> <a href="./src/gcore/types/cdn/rule_template.py">RuleTemplate</a></code>
118-
- <code title="get /cdn/resources/rule_templates">client.cdn.rule_templates.<a href="./src/gcore/resources/cdn/rule_templates.py">list</a>(\*\*<a href="src/gcore/types/cdn/rule_template_list_params.py">params</a>) -> <a href="./src/gcore/types/cdn/rule_template.py">SyncOffsetPage[RuleTemplate]</a></code>
118+
- <code title="get /cdn/resources/rule_templates">client.cdn.rule_templates.<a href="./src/gcore/resources/cdn/rule_templates.py">list</a>(\*\*<a href="src/gcore/types/cdn/rule_template_list_params.py">params</a>) -> <a href="./src/gcore/types/cdn/rule_template_list.py">RuleTemplateList</a></code>
119119
- <code title="delete /cdn/resources/rule_templates/{rule_template_id}">client.cdn.rule_templates.<a href="./src/gcore/resources/cdn/rule_templates.py">delete</a>(rule_template_id) -> None</code>
120120
- <code title="get /cdn/resources/rule_templates/{rule_template_id}">client.cdn.rule_templates.<a href="./src/gcore/resources/cdn/rule_templates.py">get</a>(rule_template_id) -> <a href="./src/gcore/types/cdn/rule_template.py">RuleTemplate</a></code>
121121
- <code title="put /cdn/resources/rule_templates/{rule_template_id}">client.cdn.rule_templates.<a href="./src/gcore/resources/cdn/rule_templates.py">replace</a>(rule_template_id, \*\*<a href="src/gcore/types/cdn/rule_template_replace_params.py">params</a>) -> <a href="./src/gcore/types/cdn/rule_template.py">RuleTemplate</a></code>

src/gcore/resources/cdn/cdn_resources/rules.py

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import annotations
44

5-
from typing import Optional
5+
from typing import Any, Optional, cast
66
from typing_extensions import Literal
77

88
import httpx
@@ -17,10 +17,10 @@
1717
async_to_raw_response_wrapper,
1818
async_to_streamed_response_wrapper,
1919
)
20-
from ....pagination import SyncOffsetPage, AsyncOffsetPage
21-
from ...._base_client import AsyncPaginator, make_request_options
20+
from ...._base_client import make_request_options
2221
from ....types.cdn.cdn_resources import rule_list_params, rule_create_params, rule_update_params, rule_replace_params
2322
from ....types.cdn.cdn_resources.cdn_resource_rule import CDNResourceRule
23+
from ....types.cdn.cdn_resources.cdn_resource_rule_list import CDNResourceRuleList
2424

2525
__all__ = ["RulesResource", "AsyncRulesResource"]
2626

@@ -272,7 +272,7 @@ def list(
272272
extra_query: Query | None = None,
273273
extra_body: Body | None = None,
274274
timeout: float | httpx.Timeout | None | NotGiven = not_given,
275-
) -> SyncOffsetPage[CDNResourceRule]:
275+
) -> CDNResourceRuleList:
276276
"""Get rules list
277277
278278
Args:
@@ -290,23 +290,27 @@ def list(
290290
291291
timeout: Override the client-level default timeout for this request, in seconds
292292
"""
293-
return self._get_api_list(
294-
path_template("/cdn/resources/{resource_id}/rules", resource_id=resource_id),
295-
page=SyncOffsetPage[CDNResourceRule],
296-
options=make_request_options(
297-
extra_headers=extra_headers,
298-
extra_query=extra_query,
299-
extra_body=extra_body,
300-
timeout=timeout,
301-
query=maybe_transform(
302-
{
303-
"limit": limit,
304-
"offset": offset,
305-
},
306-
rule_list_params.RuleListParams,
293+
return cast(
294+
CDNResourceRuleList,
295+
self._get(
296+
path_template("/cdn/resources/{resource_id}/rules", resource_id=resource_id),
297+
options=make_request_options(
298+
extra_headers=extra_headers,
299+
extra_query=extra_query,
300+
extra_body=extra_body,
301+
timeout=timeout,
302+
query=maybe_transform(
303+
{
304+
"limit": limit,
305+
"offset": offset,
306+
},
307+
rule_list_params.RuleListParams,
308+
),
307309
),
310+
cast_to=cast(
311+
Any, CDNResourceRuleList
312+
), # Union types cannot be passed in as arguments in the type system
308313
),
309-
model=CDNResourceRule,
310314
)
311315

312316
def delete(
@@ -723,7 +727,7 @@ async def update(
723727
cast_to=CDNResourceRule,
724728
)
725729

726-
def list(
730+
async def list(
727731
self,
728732
resource_id: int,
729733
*,
@@ -735,7 +739,7 @@ def list(
735739
extra_query: Query | None = None,
736740
extra_body: Body | None = None,
737741
timeout: float | httpx.Timeout | None | NotGiven = not_given,
738-
) -> AsyncPaginator[CDNResourceRule, AsyncOffsetPage[CDNResourceRule]]:
742+
) -> CDNResourceRuleList:
739743
"""Get rules list
740744
741745
Args:
@@ -753,23 +757,27 @@ def list(
753757
754758
timeout: Override the client-level default timeout for this request, in seconds
755759
"""
756-
return self._get_api_list(
757-
path_template("/cdn/resources/{resource_id}/rules", resource_id=resource_id),
758-
page=AsyncOffsetPage[CDNResourceRule],
759-
options=make_request_options(
760-
extra_headers=extra_headers,
761-
extra_query=extra_query,
762-
extra_body=extra_body,
763-
timeout=timeout,
764-
query=maybe_transform(
765-
{
766-
"limit": limit,
767-
"offset": offset,
768-
},
769-
rule_list_params.RuleListParams,
760+
return cast(
761+
CDNResourceRuleList,
762+
await self._get(
763+
path_template("/cdn/resources/{resource_id}/rules", resource_id=resource_id),
764+
options=make_request_options(
765+
extra_headers=extra_headers,
766+
extra_query=extra_query,
767+
extra_body=extra_body,
768+
timeout=timeout,
769+
query=await async_maybe_transform(
770+
{
771+
"limit": limit,
772+
"offset": offset,
773+
},
774+
rule_list_params.RuleListParams,
775+
),
770776
),
777+
cast_to=cast(
778+
Any, CDNResourceRuleList
779+
), # Union types cannot be passed in as arguments in the type system
771780
),
772-
model=CDNResourceRule,
773781
)
774782

775783
async def delete(

src/gcore/resources/cdn/rule_templates.py

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import annotations
44

5-
from typing import Optional
5+
from typing import Any, Optional, cast
66
from typing_extensions import Literal
77

88
import httpx
@@ -23,9 +23,9 @@
2323
rule_template_update_params,
2424
rule_template_replace_params,
2525
)
26-
from ...pagination import SyncOffsetPage, AsyncOffsetPage
27-
from ..._base_client import AsyncPaginator, make_request_options
26+
from ..._base_client import make_request_options
2827
from ...types.cdn.rule_template import RuleTemplate
28+
from ...types.cdn.rule_template_list import RuleTemplateList
2929

3030
__all__ = ["RuleTemplatesResource", "AsyncRuleTemplatesResource"]
3131

@@ -242,7 +242,7 @@ def list(
242242
extra_query: Query | None = None,
243243
extra_body: Body | None = None,
244244
timeout: float | httpx.Timeout | None | NotGiven = not_given,
245-
) -> SyncOffsetPage[RuleTemplate]:
245+
) -> RuleTemplateList:
246246
"""
247247
Get rule templates list
248248
@@ -259,23 +259,25 @@ def list(
259259
260260
timeout: Override the client-level default timeout for this request, in seconds
261261
"""
262-
return self._get_api_list(
263-
"/cdn/resources/rule_templates",
264-
page=SyncOffsetPage[RuleTemplate],
265-
options=make_request_options(
266-
extra_headers=extra_headers,
267-
extra_query=extra_query,
268-
extra_body=extra_body,
269-
timeout=timeout,
270-
query=maybe_transform(
271-
{
272-
"limit": limit,
273-
"offset": offset,
274-
},
275-
rule_template_list_params.RuleTemplateListParams,
262+
return cast(
263+
RuleTemplateList,
264+
self._get(
265+
"/cdn/resources/rule_templates",
266+
options=make_request_options(
267+
extra_headers=extra_headers,
268+
extra_query=extra_query,
269+
extra_body=extra_body,
270+
timeout=timeout,
271+
query=maybe_transform(
272+
{
273+
"limit": limit,
274+
"offset": offset,
275+
},
276+
rule_template_list_params.RuleTemplateListParams,
277+
),
276278
),
279+
cast_to=cast(Any, RuleTemplateList), # Union types cannot be passed in as arguments in the type system
277280
),
278-
model=RuleTemplate,
279281
)
280282

281283
def delete(
@@ -632,7 +634,7 @@ async def update(
632634
cast_to=RuleTemplate,
633635
)
634636

635-
def list(
637+
async def list(
636638
self,
637639
*,
638640
limit: int | Omit = omit,
@@ -643,7 +645,7 @@ def list(
643645
extra_query: Query | None = None,
644646
extra_body: Body | None = None,
645647
timeout: float | httpx.Timeout | None | NotGiven = not_given,
646-
) -> AsyncPaginator[RuleTemplate, AsyncOffsetPage[RuleTemplate]]:
648+
) -> RuleTemplateList:
647649
"""
648650
Get rule templates list
649651
@@ -660,23 +662,25 @@ def list(
660662
661663
timeout: Override the client-level default timeout for this request, in seconds
662664
"""
663-
return self._get_api_list(
664-
"/cdn/resources/rule_templates",
665-
page=AsyncOffsetPage[RuleTemplate],
666-
options=make_request_options(
667-
extra_headers=extra_headers,
668-
extra_query=extra_query,
669-
extra_body=extra_body,
670-
timeout=timeout,
671-
query=maybe_transform(
672-
{
673-
"limit": limit,
674-
"offset": offset,
675-
},
676-
rule_template_list_params.RuleTemplateListParams,
665+
return cast(
666+
RuleTemplateList,
667+
await self._get(
668+
"/cdn/resources/rule_templates",
669+
options=make_request_options(
670+
extra_headers=extra_headers,
671+
extra_query=extra_query,
672+
extra_body=extra_body,
673+
timeout=timeout,
674+
query=await async_maybe_transform(
675+
{
676+
"limit": limit,
677+
"offset": offset,
678+
},
679+
rule_template_list_params.RuleTemplateListParams,
680+
),
677681
),
682+
cast_to=cast(Any, RuleTemplateList), # Union types cannot be passed in as arguments in the type system
678683
),
679-
model=RuleTemplate,
680684
)
681685

682686
async def delete(

0 commit comments

Comments
 (0)