Skip to content

Fix response parsing for MultipleItems requests #97

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 22 additions & 9 deletions src/webflow/resources/collections/resources/items/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
from .....core.api_error import ApiError
from .types.items_create_item_request import ItemsCreateItemRequest
from .....types.collection_item import CollectionItem
from .....types.bulk_collection_item import BulkCollectionItem
from .....types.collection_item_list import CollectionItemList
from .types.multiple_items import MultipleItems
from .....core.serialization import convert_and_respect_annotation_metadata
from .types.items_delete_items_request_items_item import ItemsDeleteItemsRequestItemsItem
from .....errors.conflict_error import ConflictError
Expand Down Expand Up @@ -188,7 +191,7 @@ def create_item(
*,
request: ItemsCreateItemRequest,
request_options: typing.Optional[RequestOptions] = None,
) -> CollectionItem:
) -> typing.Union[CollectionItem, CollectionItemList]:
"""
Create Item(s) in a Collection.

Expand All @@ -209,7 +212,7 @@ def create_item(

Returns
-------
CollectionItem
typing.Union[CollectionItem, CollectionItemList]
Request was successful

Examples
Expand Down Expand Up @@ -246,13 +249,23 @@ def create_item(
)
try:
if 200 <= _response.status_code < 300:
return typing.cast(
CollectionItem,
parse_obj_as(
type_=CollectionItem, # type: ignore
object_=_response.json(),
),
)
# Check if the request is a MultipleItems object
if isinstance(request, MultipleItems):
return typing.cast(
CollectionItemList,
parse_obj_as(
type_=CollectionItemList, # type: ignore
object_=_response.json(),
),
)
else:
return typing.cast(
CollectionItem,
parse_obj_as(
type_=CollectionItem, # type: ignore
object_=_response.json(),
),
)
if _response.status_code == 400:
raise BadRequestError(
typing.cast(
Expand Down