Skip to content

Commit b3113c0

Browse files
committed
Merge branch '1.0.0-alpha1' of https://github.com/serverlessworkflow/synapse into 1.0.0-alpha1
2 parents fafefdf + c1c0a55 commit b3113c0

File tree

4 files changed

+43
-6
lines changed

4 files changed

+43
-6
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright © 2024-Present The Synapse Authors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License"),
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
// http://www.apache.org/licenses/LICENSE-2.0
7+
//
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
14+
namespace Synapse.Api.Client;
15+
16+
/// <summary>
17+
/// Defines extensions for <see cref="HttpRequestMessage"/>s
18+
/// </summary>
19+
public static class HttpRequestMessageExtensions
20+
{
21+
22+
/// <summary>
23+
/// Enables Web Assembly streaming response for the specified <see cref="HttpRequestMessage"/>
24+
/// </summary>
25+
/// <param name="request">The <see cref="HttpRequestMessage"/> to enable Web Assembly streaming response for</param>
26+
public static void EnableWebAssemblyStreamingResponse(this HttpRequestMessage request) => request.Options.Set(new("WebAssemblyEnableStreamingResponse"), true);
27+
28+
}

src/api/Synapse.Api.Client.Http/Extensions/ISynapseApiClientExtensions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
// See the License for the specific language governing permissions and
1212
// limitations under the License.
1313

14+
using Neuroglia;
15+
1416
namespace Synapse.Api.Client;
1517

1618
/// <summary>
@@ -45,4 +47,4 @@ public static IClusterResourceApiClient<TResource> ManageCluster<TResource>(this
4547
return (IClusterResourceApiClient<TResource>)apiProperty.GetValue(client)!;
4648
}
4749

48-
}
50+
}

src/api/Synapse.Api.Client.Http/Services/ResourceHttpApiClient.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ public virtual async Task<IAsyncEnumerable<TResource>> ListAsync(string? @namesp
8282
var queryStringArguments = new Dictionary<string, string>();
8383
if (labelSelectors?.Any() == true) queryStringArguments.Add("labelSelector", labelSelectors.Select(s => s.ToString()).Join(','));
8484
if (queryStringArguments.Count != 0) uri += $"?{queryStringArguments.Select(kvp => $"{kvp.Key}={kvp.Value}").Join('&')}";
85-
var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
85+
using var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
86+
request.EnableWebAssemblyStreamingResponse();
8687
var response = await this.ProcessResponseAsync(await this.HttpClient.SendAsync(request, cancellationToken).ConfigureAwait(false), cancellationToken).ConfigureAwait(false);
8788
var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
8889
return this.JsonSerializer.DeserializeAsyncEnumerable<TResource>(responseStream, cancellationToken: cancellationToken)!;
@@ -96,7 +97,8 @@ public virtual async Task<IAsyncEnumerable<TResource>> ListAsync(IEnumerable<Lab
9697
var queryStringArguments = new Dictionary<string, string>();
9798
if (labelSelectors?.Any() == true) queryStringArguments.Add("labelSelector", labelSelectors.Select(s => s.ToString()).Join(','));
9899
if (queryStringArguments.Count != 0) uri += $"?{queryStringArguments.Select(kvp => $"{kvp.Key}={kvp.Value}").Join('&')}";
99-
var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
100+
using var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
101+
request.EnableWebAssemblyStreamingResponse();
100102
var response = await this.ProcessResponseAsync(await this.HttpClient.SendAsync(request, cancellationToken).ConfigureAwait(false), cancellationToken).ConfigureAwait(false);
101103
var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
102104
return this.JsonSerializer.DeserializeAsyncEnumerable<TResource>(responseStream, cancellationToken: cancellationToken)!;
@@ -110,7 +112,8 @@ public virtual async Task<IAsyncEnumerable<IResourceWatchEvent<TResource>>> Watc
110112
var queryStringArguments = new Dictionary<string, string>();
111113
if (labelSelectors?.Any() == true) queryStringArguments.Add("labelSelector", labelSelectors.Select(s => s.ToString()).Join(','));
112114
if (queryStringArguments.Count != 0) uri += $"?{queryStringArguments.Select(kvp => $"{kvp.Key}={kvp.Value}").Join('&')}";
113-
var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
115+
using var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
116+
request.EnableWebAssemblyStreamingResponse();
114117
var response = await this.HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken);
115118
var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
116119
return this.JsonSerializer.DeserializeAsyncEnumerable<ResourceWatchEvent<TResource>>(responseStream, cancellationToken)!;
@@ -124,7 +127,8 @@ public virtual async Task<IAsyncEnumerable<IResourceWatchEvent<TResource>>> Watc
124127
var queryStringArguments = new Dictionary<string, string>();
125128
if (labelSelectors?.Any() == true) queryStringArguments.Add("labelSelector", labelSelectors.Select(s => s.ToString()).Join(','));
126129
if (queryStringArguments.Count != 0) uri += $"?{queryStringArguments.Select(kvp => $"{kvp.Key}={kvp.Value}").Join('&')}";
127-
var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
130+
using var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
131+
request.EnableWebAssemblyStreamingResponse();
128132
var response = await this.HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
129133
var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
130134
return this.JsonSerializer.DeserializeAsyncEnumerable<ResourceWatchEvent<TResource>>(responseStream, cancellationToken)!;
@@ -138,6 +142,7 @@ public virtual async Task<IAsyncEnumerable<IResourceWatchEvent<TResource>>> Moni
138142
var resource = new TResource();
139143
var uri = $"/api/{resource.Definition.Version}/{resource.Definition.Plural}/{@namespace}/{name}/monitor";
140144
using var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
145+
request.EnableWebAssemblyStreamingResponse();
141146
var response = await this.HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
142147
var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
143148
return this.JsonSerializer.DeserializeAsyncEnumerable<ResourceWatchEvent<TResource>>(responseStream, cancellationToken)!;
@@ -150,7 +155,8 @@ public virtual async Task<IAsyncEnumerable<IResourceWatchEvent<TResource>>> Moni
150155
var resource = new TResource();
151156
var uri = $"/api/{resource.Definition.Version}/{resource.Definition.Plural}/{name}/monitor";
152157
using var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
153-
using var response = await this.HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
158+
request.EnableWebAssemblyStreamingResponse();
159+
var response = await this.HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
154160
var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
155161
return this.JsonSerializer.DeserializeAsyncEnumerable<ResourceWatchEvent<TResource>>(responseStream, cancellationToken)!;
156162
}

src/api/Synapse.Api.Client.Http/Services/WorkflowInstanceHttpApiClient.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public virtual async Task<IAsyncEnumerable<ITextDocumentWatchEvent>> WatchLogsAs
4343
var resource = new WorkflowInstance();
4444
var uri = $"/api/{resource.Definition.Version}/{resource.Definition.Plural}/{@namespace}/{name}/logs/watch";
4545
using var request = await this.ProcessRequestAsync(new HttpRequestMessage(HttpMethod.Get, uri), cancellationToken).ConfigureAwait(false);
46+
request.EnableWebAssemblyStreamingResponse();
4647
var response = await this.HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
4748
var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
4849
return this.JsonSerializer.DeserializeAsyncEnumerable<TextDocumentWatchEvent>(responseStream, cancellationToken)!;

0 commit comments

Comments
 (0)