Skip to content

Update long-running operation APIs to use LRO subclient pattern #156

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 17 commits into
base: main
Choose a base branch
from
Open
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
176 changes: 120 additions & 56 deletions api/OpenAI.netstandard2.0.cs

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions src/Custom/Assistants/AssistantClient.Protocol.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public virtual ClientResult CreateAssistant(BinaryContent content, RequestOption
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual IAsyncEnumerable<ClientResult> GetAssistantsAsync(int? limit, string order, string after, string before, RequestOptions options)
{
AssistantsPageEnumerator enumerator = new AssistantsPageEnumerator(_pipeline, _endpoint, limit, order, after, before, options);
AssistantsPageEnumerator enumerator = new(_pipeline, _endpoint, limit, order, after, before, options);
return PageCollectionHelpers.CreateAsync(enumerator);
}

Expand Down Expand Up @@ -101,7 +101,7 @@ public virtual IAsyncEnumerable<ClientResult> GetAssistantsAsync(int? limit, str
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual IEnumerable<ClientResult> GetAssistants(int? limit, string order, string after, string before, RequestOptions options)
{
AssistantsPageEnumerator enumerator = new AssistantsPageEnumerator(_pipeline, _endpoint, limit, order, after, before, options);
AssistantsPageEnumerator enumerator = new(_pipeline, _endpoint, limit, order, after, before, options);
return PageCollectionHelpers.Create(enumerator);
}

Expand Down Expand Up @@ -259,7 +259,7 @@ public virtual IAsyncEnumerable<ClientResult> GetMessagesAsync(string threadId,
{
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));

MessagesPageEnumerator enumerator = new MessagesPageEnumerator(_pipeline, _endpoint, threadId, limit, order, after, before, options);
MessagesPageEnumerator enumerator = new(_pipeline, _endpoint, threadId, limit, order, after, before, options);
return PageCollectionHelpers.CreateAsync(enumerator);
}

Expand Down Expand Up @@ -295,7 +295,7 @@ public virtual IEnumerable<ClientResult> GetMessages(string threadId, int? limit
{
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));

MessagesPageEnumerator enumerator = new MessagesPageEnumerator(_pipeline, _endpoint, threadId, limit, order, after, before, options);
MessagesPageEnumerator enumerator = new(_pipeline, _endpoint, threadId, limit, order, after, before, options);
return PageCollectionHelpers.Create(enumerator);
}

Expand Down Expand Up @@ -381,7 +381,7 @@ public virtual IAsyncEnumerable<ClientResult> GetRunsAsync(string threadId, int?
{
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));

RunsPageEnumerator enumerator = new RunsPageEnumerator(_pipeline, _endpoint, threadId, limit, order, after, before, options);
RunsPageEnumerator enumerator = new(_pipeline, _endpoint, threadId, limit, order, after, before, options);
return PageCollectionHelpers.CreateAsync(enumerator);
}

Expand Down Expand Up @@ -417,7 +417,7 @@ public virtual IEnumerable<ClientResult> GetRuns(string threadId, int? limit, st
{
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));

RunsPageEnumerator enumerator = new RunsPageEnumerator(_pipeline, _endpoint, threadId, limit, order, after, before, options);
RunsPageEnumerator enumerator = new(_pipeline, _endpoint, threadId, limit, order, after, before, options);
return PageCollectionHelpers.Create(enumerator);
}

Expand Down Expand Up @@ -495,7 +495,7 @@ public virtual IAsyncEnumerable<ClientResult> GetRunStepsAsync(string threadId,
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));
Argument.AssertNotNullOrEmpty(runId, nameof(runId));

RunStepsPageEnumerator enumerator = new RunStepsPageEnumerator(_pipeline, _endpoint, threadId, runId, limit, order, after, before, options);
RunStepsPageEnumerator enumerator = new(_pipeline, _endpoint, threadId, runId, limit, order, after, before, options);
return PageCollectionHelpers.CreateAsync(enumerator);
}

Expand Down Expand Up @@ -533,7 +533,7 @@ public virtual IEnumerable<ClientResult> GetRunSteps(string threadId, string run
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));
Argument.AssertNotNullOrEmpty(runId, nameof(runId));

RunStepsPageEnumerator enumerator = new RunStepsPageEnumerator(_pipeline, _endpoint, threadId, runId, limit, order, after, before, options);
RunStepsPageEnumerator enumerator = new(_pipeline, _endpoint, threadId, runId, limit, order, after, before, options);
return PageCollectionHelpers.Create(enumerator);
}

Expand Down
177 changes: 33 additions & 144 deletions src/Custom/Assistants/AssistantClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -118,14 +118,8 @@ public virtual AsyncPageCollection<Assistant> GetAssistantsAsync(
AssistantCollectionOptions options = default,
CancellationToken cancellationToken = default)
{
AssistantsPageEnumerator enumerator = new(_pipeline, _endpoint,
options?.PageSize,
options?.Order?.ToString(),
options?.AfterId,
options?.BeforeId,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.CreateAsync(enumerator);
return GetAssistantsAsync(options?.PageSize, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions())
as AsyncPageCollection<Assistant>;
}

/// <summary>
Expand All @@ -144,14 +138,8 @@ public virtual AsyncPageCollection<Assistant> GetAssistantsAsync(
Argument.AssertNotNull(firstPageToken, nameof(firstPageToken));

AssistantsPageToken pageToken = AssistantsPageToken.FromToken(firstPageToken);
AssistantsPageEnumerator enumerator = new(_pipeline, _endpoint,
pageToken.Limit,
pageToken.Order,
pageToken.After,
pageToken.Before,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.CreateAsync(enumerator);
return GetAssistantsAsync(pageToken?.Limit, pageToken?.Order, pageToken?.After, pageToken.Before, cancellationToken.ToRequestOptions())
as AsyncPageCollection<Assistant>;
}

/// <summary>
Expand All @@ -167,14 +155,8 @@ public virtual PageCollection<Assistant> GetAssistants(
AssistantCollectionOptions options = default,
CancellationToken cancellationToken = default)
{
AssistantsPageEnumerator enumerator = new(_pipeline, _endpoint,
options?.PageSize,
options?.Order?.ToString(),
options?.AfterId,
options?.BeforeId,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.Create(enumerator);
return GetAssistants(options?.PageSize, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions())
as PageCollection<Assistant>;
}

/// <summary>
Expand All @@ -193,14 +175,8 @@ public virtual PageCollection<Assistant> GetAssistants(
Argument.AssertNotNull(firstPageToken, nameof(firstPageToken));

AssistantsPageToken pageToken = AssistantsPageToken.FromToken(firstPageToken);
AssistantsPageEnumerator enumerator = new(_pipeline, _endpoint,
pageToken.Limit,
pageToken.Order,
pageToken.After,
pageToken.Before,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.Create(enumerator);
return GetAssistants(pageToken?.Limit, pageToken?.Order, pageToken?.After, pageToken.Before, cancellationToken.ToRequestOptions())
as PageCollection<Assistant>;
}

/// <summary>
Expand Down Expand Up @@ -486,15 +462,8 @@ public virtual AsyncPageCollection<ThreadMessage> GetMessagesAsync(
{
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));

MessagesPageEnumerator enumerator = new(_pipeline, _endpoint,
threadId,
options?.PageSize,
options?.Order?.ToString(),
options?.AfterId,
options?.BeforeId,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.CreateAsync(enumerator);
return GetMessagesAsync(threadId, options?.PageSize, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions())
as AsyncPageCollection<ThreadMessage>;
}

/// <summary>
Expand All @@ -513,15 +482,8 @@ public virtual AsyncPageCollection<ThreadMessage> GetMessagesAsync(
Argument.AssertNotNull(firstPageToken, nameof(firstPageToken));

MessagesPageToken pageToken = MessagesPageToken.FromToken(firstPageToken);
MessagesPageEnumerator enumerator = new(_pipeline, _endpoint,
pageToken.ThreadId,
pageToken.Limit,
pageToken.Order,
pageToken.After,
pageToken.Before,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.CreateAsync(enumerator);
return GetMessagesAsync(pageToken?.ThreadId, pageToken?.Limit, pageToken?.Order, pageToken?.After, pageToken?.Before, cancellationToken.ToRequestOptions())
as AsyncPageCollection<ThreadMessage>;
}

/// <summary>
Expand All @@ -541,15 +503,8 @@ public virtual PageCollection<ThreadMessage> GetMessages(
{
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));

MessagesPageEnumerator enumerator = new(_pipeline, _endpoint,
threadId,
options?.PageSize,
options?.Order?.ToString(),
options?.AfterId,
options?.BeforeId,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.Create(enumerator);
return GetMessages(threadId, options?.PageSize, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions())
as PageCollection<ThreadMessage>;
}

/// <summary>
Expand All @@ -568,15 +523,9 @@ public virtual PageCollection<ThreadMessage> GetMessages(
Argument.AssertNotNull(firstPageToken, nameof(firstPageToken));

MessagesPageToken pageToken = MessagesPageToken.FromToken(firstPageToken);
MessagesPageEnumerator enumerator = new(_pipeline, _endpoint,
pageToken.ThreadId,
pageToken.Limit,
pageToken.Order,
pageToken.After,
pageToken.Before,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.Create(enumerator);
return GetMessages(pageToken?.ThreadId, pageToken?.Limit, pageToken?.Order, pageToken?.After, pageToken?.Before, cancellationToken.ToRequestOptions())
as PageCollection<ThreadMessage>;

}

/// <summary>
Expand Down Expand Up @@ -888,15 +837,8 @@ public virtual AsyncPageCollection<ThreadRun> GetRunsAsync(
{
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));

RunsPageEnumerator enumerator = new(_pipeline, _endpoint,
threadId,
options?.PageSize,
options?.Order?.ToString(),
options?.AfterId,
options?.BeforeId,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.CreateAsync(enumerator);
return GetRunsAsync(threadId, options?.PageSize, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions())
as AsyncPageCollection<ThreadRun>;
}

/// <summary>
Expand All @@ -915,15 +857,8 @@ public virtual AsyncPageCollection<ThreadRun> GetRunsAsync(
Argument.AssertNotNull(firstPageToken, nameof(firstPageToken));

RunsPageToken pageToken = RunsPageToken.FromToken(firstPageToken);
RunsPageEnumerator enumerator = new(_pipeline, _endpoint,
pageToken.ThreadId,
pageToken.Limit,
pageToken.Order,
pageToken.After,
pageToken.Before,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.CreateAsync(enumerator);
return GetRunsAsync(pageToken?.ThreadId, pageToken?.Limit, pageToken?.Order, pageToken?.After, pageToken?.Before, cancellationToken.ToRequestOptions())
as AsyncPageCollection<ThreadRun>;
}

/// <summary>
Expand All @@ -943,15 +878,8 @@ public virtual PageCollection<ThreadRun> GetRuns(
{
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));

RunsPageEnumerator enumerator = new(_pipeline, _endpoint,
threadId,
options?.PageSize,
options?.Order?.ToString(),
options?.AfterId,
options?.BeforeId,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.Create(enumerator);
return GetRuns(threadId, options?.PageSize, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions())
as PageCollection<ThreadRun>;
}

/// <summary>
Expand All @@ -970,15 +898,8 @@ public virtual PageCollection<ThreadRun> GetRuns(
Argument.AssertNotNull(firstPageToken, nameof(firstPageToken));

RunsPageToken pageToken = RunsPageToken.FromToken(firstPageToken);
RunsPageEnumerator enumerator = new(_pipeline, _endpoint,
pageToken.ThreadId,
pageToken.Limit,
pageToken.Order,
pageToken.After,
pageToken.Before,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.Create(enumerator);
return GetRuns(pageToken?.ThreadId, pageToken?.Limit, pageToken?.Order, pageToken?.After, pageToken?.Before, cancellationToken.ToRequestOptions())
as PageCollection<ThreadRun>;
}

/// <summary>
Expand Down Expand Up @@ -1168,16 +1089,8 @@ public virtual AsyncPageCollection<RunStep> GetRunStepsAsync(
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));
Argument.AssertNotNullOrEmpty(runId, nameof(runId));

RunStepsPageEnumerator enumerator = new(_pipeline, _endpoint,
threadId,
runId,
options?.PageSize,
options?.Order?.ToString(),
options?.AfterId,
options?.BeforeId,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.CreateAsync(enumerator);
return GetRunStepsAsync(threadId, runId, options?.PageSize, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions())
as AsyncPageCollection<RunStep>;
}

/// <summary>
Expand All @@ -1196,16 +1109,8 @@ public virtual AsyncPageCollection<RunStep> GetRunStepsAsync(
Argument.AssertNotNull(firstPageToken, nameof(firstPageToken));

RunStepsPageToken pageToken = RunStepsPageToken.FromToken(firstPageToken);
RunStepsPageEnumerator enumerator = new(_pipeline, _endpoint,
pageToken.ThreadId,
pageToken.RunId,
pageToken.Limit,
pageToken.Order,
pageToken.After,
pageToken.Before,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.CreateAsync(enumerator);
return GetRunStepsAsync(pageToken?.ThreadId, pageToken?.RunId, pageToken?.Limit, pageToken?.Order, pageToken?.After, pageToken?.Before, cancellationToken.ToRequestOptions())
as AsyncPageCollection<RunStep>;
}

/// <summary>
Expand All @@ -1228,16 +1133,8 @@ public virtual PageCollection<RunStep> GetRunSteps(
Argument.AssertNotNullOrEmpty(threadId, nameof(threadId));
Argument.AssertNotNullOrEmpty(runId, nameof(runId));

RunStepsPageEnumerator enumerator = new(_pipeline, _endpoint,
threadId,
runId,
options?.PageSize,
options?.Order?.ToString(),
options?.AfterId,
options?.BeforeId,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.Create(enumerator);
return GetRunSteps(threadId, runId, options?.PageSize, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions())
as PageCollection<RunStep>;
}

/// <summary>
Expand All @@ -1256,16 +1153,8 @@ public virtual PageCollection<RunStep> GetRunSteps(
Argument.AssertNotNull(firstPageToken, nameof(firstPageToken));

RunStepsPageToken pageToken = RunStepsPageToken.FromToken(firstPageToken);
RunStepsPageEnumerator enumerator = new(_pipeline, _endpoint,
pageToken.ThreadId,
pageToken.RunId,
pageToken.Limit,
pageToken.Order,
pageToken.After,
pageToken.Before,
cancellationToken.ToRequestOptions());

return PageCollectionHelpers.Create(enumerator);
return GetRunSteps(pageToken?.ThreadId, pageToken?.RunId, pageToken?.Limit, pageToken?.Order, pageToken?.After, pageToken?.Before, cancellationToken.ToRequestOptions())
as PageCollection<RunStep>;
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ internal partial class AssistantsPageEnumerator : PageEnumerator<Assistant>
private readonly string _before;
private readonly RequestOptions _options;

public virtual ClientPipeline Pipeline => _pipeline;

public AssistantsPageEnumerator(
ClientPipeline pipeline,
Uri endpoint,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ internal partial class MessagesPageEnumerator : PageEnumerator<ThreadMessage>
private readonly string _before;
private readonly RequestOptions _options;

public virtual ClientPipeline Pipeline => _pipeline;

public MessagesPageEnumerator(
ClientPipeline pipeline,
Uri endpoint,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ internal partial class RunStepsPageEnumerator : PageEnumerator<RunStep>

private string? _after;

public virtual ClientPipeline Pipeline => _pipeline;

public RunStepsPageEnumerator(
ClientPipeline pipeline,
Uri endpoint,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ internal partial class RunsPageEnumerator : PageEnumerator<ThreadRun>
private readonly string _before;
private readonly RequestOptions _options;

public virtual ClientPipeline Pipeline => _pipeline;

public RunsPageEnumerator(
ClientPipeline pipeline,
Uri endpoint,
Expand Down
Loading