Skip to content
Merged
Show file tree
Hide file tree
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
4 changes: 2 additions & 2 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@ Methods:
- <code title="post /connect/magic-link">client.<a href="./src/openint/_client.py">create_magic_link</a>(\*\*<a href="src/openint/types/client_create_magic_link_params.py">params</a>) -> <a href="./src/openint/types/create_magic_link_response.py">CreateMagicLinkResponse</a></code>
- <code title="post /connect/token">client.<a href="./src/openint/_client.py">create_token</a>(\*\*<a href="src/openint/types/client_create_token_params.py">params</a>) -> <a href="./src/openint/types/create_token_response.py">CreateTokenResponse</a></code>
- <code title="get /connection">client.<a href="./src/openint/_client.py">get_connection</a>(\*\*<a href="src/openint/types/client_get_connection_params.py">params</a>) -> <a href="./src/openint/types/get_connection_response.py">GetConnectionResponse</a></code>
- <code title="get /connector-config">client.<a href="./src/openint/_client.py">list_connection_configs</a>(\*\*<a href="src/openint/types/client_list_connection_configs_params.py">params</a>) -> <a href="./src/openint/types/list_connection_configs_response.py">ListConnectionConfigsResponse</a></code>
- <code title="get /connector-config">client.<a href="./src/openint/_client.py">list_connection_configs</a>(\*\*<a href="src/openint/types/client_list_connection_configs_params.py">params</a>) -> <a href="./src/openint/types/list_connection_configs_response.py">SyncOffsetPagination[ListConnectionConfigsResponse]</a></code>
- <code title="get /connection/{id}">client.<a href="./src/openint/_client.py">list_connections</a>(id, \*\*<a href="src/openint/types/client_list_connections_params.py">params</a>) -> <a href="./src/openint/types/list_connections_response.py">ListConnectionsResponse</a></code>
- <code title="get /event">client.<a href="./src/openint/_client.py">list_events</a>(\*\*<a href="src/openint/types/client_list_events_params.py">params</a>) -> <a href="./src/openint/types/list_events_response.py">ListEventsResponse</a></code>
- <code title="get /event">client.<a href="./src/openint/_client.py">list_events</a>(\*\*<a href="src/openint/types/client_list_events_params.py">params</a>) -> <a href="./src/openint/types/list_events_response.py">SyncOffsetPagination[ListEventsResponse]</a></code>
42 changes: 26 additions & 16 deletions src/openint/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,13 @@
async_to_streamed_response_wrapper,
)
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
from .pagination import SyncOffsetPagination, AsyncOffsetPagination
from ._exceptions import APIStatusError
from ._base_client import (
DEFAULT_MAX_RETRIES,
SyncAPIClient,
AsyncAPIClient,
AsyncPaginator,
make_request_options,
)
from .types.list_events_response import ListEventsResponse
Expand Down Expand Up @@ -605,7 +607,7 @@ def list_connection_configs(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> ListConnectionConfigsResponse:
) -> SyncOffsetPagination[ListConnectionConfigsResponse]:
"""
List all connector configurations with optional filtering

Expand All @@ -620,8 +622,9 @@ def list_connection_configs(

timeout: Override the client-level default timeout for this request, in seconds
"""
return self.get(
return self.get_api_list(
"/connector-config",
page=SyncOffsetPagination[ListConnectionConfigsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand All @@ -637,7 +640,9 @@ def list_connection_configs(
client_list_connection_configs_params.ClientListConnectionConfigsParams,
),
),
cast_to=ListConnectionConfigsResponse,
model=cast(
Any, ListConnectionConfigsResponse
), # Union types cannot be passed in as arguments in the type system
)

def list_connections(
Expand Down Expand Up @@ -708,7 +713,7 @@ def list_events(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> ListEventsResponse:
) -> SyncOffsetPagination[ListEventsResponse]:
"""
List all events for an organization

Expand All @@ -721,8 +726,9 @@ def list_events(

timeout: Override the client-level default timeout for this request, in seconds
"""
return self.get(
return self.get_api_list(
"/event",
page=SyncOffsetPagination[ListEventsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand All @@ -736,7 +742,7 @@ def list_events(
client_list_events_params.ClientListEventsParams,
),
),
cast_to=ListEventsResponse,
model=ListEventsResponse,
)

@override
Expand Down Expand Up @@ -1248,7 +1254,7 @@ async def get_connection(
cast_to=GetConnectionResponse,
)

async def list_connection_configs(
def list_connection_configs(
self,
*,
connector_name: Literal[
Expand Down Expand Up @@ -1316,7 +1322,7 @@ async def list_connection_configs(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> ListConnectionConfigsResponse:
) -> AsyncPaginator[ListConnectionConfigsResponse, AsyncOffsetPagination[ListConnectionConfigsResponse]]:
"""
List all connector configurations with optional filtering

Expand All @@ -1331,14 +1337,15 @@ async def list_connection_configs(

timeout: Override the client-level default timeout for this request, in seconds
"""
return await self.get(
return self.get_api_list(
"/connector-config",
page=AsyncOffsetPagination[ListConnectionConfigsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=await async_maybe_transform(
query=maybe_transform(
{
"connector_name": connector_name,
"expand": expand,
Expand All @@ -1348,7 +1355,9 @@ async def list_connection_configs(
client_list_connection_configs_params.ClientListConnectionConfigsParams,
),
),
cast_to=ListConnectionConfigsResponse,
model=cast(
Any, ListConnectionConfigsResponse
), # Union types cannot be passed in as arguments in the type system
)

async def list_connections(
Expand Down Expand Up @@ -1408,7 +1417,7 @@ async def list_connections(
),
)

async def list_events(
def list_events(
self,
*,
limit: int | NotGiven = NOT_GIVEN,
Expand All @@ -1419,7 +1428,7 @@ async def list_events(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> ListEventsResponse:
) -> AsyncPaginator[ListEventsResponse, AsyncOffsetPagination[ListEventsResponse]]:
"""
List all events for an organization

Expand All @@ -1432,22 +1441,23 @@ async def list_events(

timeout: Override the client-level default timeout for this request, in seconds
"""
return await self.get(
return self.get_api_list(
"/event",
page=AsyncOffsetPagination[ListEventsResponse],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=await async_maybe_transform(
query=maybe_transform(
{
"limit": limit,
"offset": offset,
},
client_list_events_params.ClientListEventsParams,
),
),
cast_to=ListEventsResponse,
model=ListEventsResponse,
)

@override
Expand Down
74 changes: 74 additions & 0 deletions src/openint/pagination.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import List, Generic, TypeVar, Optional
from typing_extensions import override

from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage

__all__ = ["SyncOffsetPagination", "AsyncOffsetPagination"]

_T = TypeVar("_T")


class SyncOffsetPagination(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
items: List[_T]
total: Optional[int] = None
offset: Optional[int] = None
limit: Optional[int] = None

@override
def _get_page_items(self) -> List[_T]:
items = self.items
if not items:
return []
return items

@override
def next_page_info(self) -> Optional[PageInfo]:
offset = self.offset
if offset is None:
return None

length = len(self._get_page_items())
current_count = offset + length

total = self.total
if total is None:
return None

if current_count < total:
return PageInfo(params={"offset": current_count})

return None


class AsyncOffsetPagination(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
items: List[_T]
total: Optional[int] = None
offset: Optional[int] = None
limit: Optional[int] = None

@override
def _get_page_items(self) -> List[_T]:
items = self.items
if not items:
return []
return items

@override
def next_page_info(self) -> Optional[PageInfo]:
offset = self.offset
if offset is None:
return None

length = len(self._get_page_items())
current_count = offset + length

total = self.total
if total is None:
return None

if current_count < total:
return PageInfo(params={"offset": current_count})

return None
Loading