@@ -17,10 +17,11 @@ public partial class {{name}}Client : ResourceClient
1717 }
1818
1919 {{for api in apis }}
20+ {{~ $filteredParams = FilterParameters api.operation "watch" ~}}
2021 /// <summary>
2122 /// {{ToXmlDoc api.operation.description}}
2223 /// </summary>
23- {{ for parameter in api.operation.parameters }}
24+ {{ for parameter in $filteredParams }}
2425 /// <param name="{{GetDotNetNameOpenApiParameter parameter "false"}}">
2526 /// {{ToXmlDoc parameter.description}}
2627 /// </param>
@@ -29,15 +30,15 @@ public partial class {{name}}Client : ResourceClient
2930 /// A <see cref="CancellationToken"/> which can be used to cancel the asynchronous operation.
3031 /// </param>
3132 public async Task{{GetReturnType api.operation "<>"}} {{GetActionName api.operation name "Async"}}(
32- {{ for parameter in api.operation.parameters }}
33+ {{ for parameter in $filteredParams }}
3334 {{GetDotNetTypeOpenApiParameter parameter}} {{GetDotNetNameOpenApiParameter parameter "true"}},
3435 {{ end }}
3536 CancellationToken cancellationToken = default(CancellationToken))
3637 {
3738 {{if IfReturnType api.operation "stream"}}
3839 var _result = await Client.{{group}}.{{GetOperationId api.operation "WithHttpMessagesAsync"}}(
3940 {{ for parameter in api.operation.parameters}}
40- {{GetDotNetNameOpenApiParameter parameter " false" }},
41+ {{GetParameterValueForWatch parameter false}},
4142 {{end}}
4243 null,
4344 cancellationToken);
@@ -47,7 +48,7 @@ public partial class {{name}}Client : ResourceClient
4748 {{if IfReturnType api.operation "obj"}}
4849 using (var _result = await Client.{{group}}.{{GetOperationId api.operation "WithHttpMessagesAsync"}}(
4950 {{ for parameter in api.operation.parameters}}
50- {{GetDotNetNameOpenApiParameter parameter " false" }},
51+ {{GetParameterValueForWatch parameter false}},
5152 {{end}}
5253 null,
5354 cancellationToken).ConfigureAwait(false))
@@ -58,7 +59,7 @@ public partial class {{name}}Client : ResourceClient
5859 {{if IfReturnType api.operation "void"}}
5960 using (var _result = await Client.{{group}}.{{GetOperationId api.operation "WithHttpMessagesAsync"}}(
6061 {{ for parameter in api.operation.parameters}}
61- {{GetDotNetNameOpenApiParameter parameter " false" }},
62+ {{GetParameterValueForWatch parameter false}},
6263 {{end}}
6364 null,
6465 cancellationToken).ConfigureAwait(false))
@@ -71,7 +72,7 @@ public partial class {{name}}Client : ResourceClient
7172 /// <summary>
7273 /// {{ToXmlDoc api.operation.description}}
7374 /// </summary>
74- {{ for parameter in api.operation.parameters }}
75+ {{ for parameter in $filteredParams }}
7576 /// <param name="{{GetDotNetNameOpenApiParameter parameter "false"}}">
7677 /// {{ToXmlDoc parameter.description}}
7778 /// </param>
@@ -80,14 +81,14 @@ public partial class {{name}}Client : ResourceClient
8081 /// A <see cref="CancellationToken"/> which can be used to cancel the asynchronous operation.
8182 /// </param>
8283 public async Task<T> {{GetActionName api.operation name "Async"}}<T>(
83- {{ for parameter in api.operation.parameters }}
84+ {{ for parameter in $filteredParams }}
8485 {{GetDotNetTypeOpenApiParameter parameter}} {{GetDotNetNameOpenApiParameter parameter "false"}},
8586 {{ end }}
8687 CancellationToken cancellationToken = default(CancellationToken))
8788 {
8889 using (var _result = await Client.{{group}}.{{GetOperationId api.operation "WithHttpMessagesAsync"}}<T>(
8990 {{ for parameter in api.operation.parameters}}
90- {{GetDotNetNameOpenApiParameter parameter " false" }},
91+ {{GetParameterValueForWatch parameter false}},
9192 {{end}}
9293 null,
9394 cancellationToken).ConfigureAwait(false))
@@ -96,5 +97,69 @@ public partial class {{name}}Client : ResourceClient
9697 }
9798 }
9899 {{end}}
100+
101+ #if !K8S_AOT
102+ {{if IfParamContains api.operation "watch"}}
103+ /// <summary>
104+ /// Watch {{ToXmlDoc api.operation.description}}
105+ /// </summary>
106+ {{ for parameter in $filteredParams}}
107+ /// <param name="{{GetDotNetNameOpenApiParameter parameter "false"}}">
108+ /// {{ToXmlDoc parameter.description}}
109+ /// </param>
110+ {{ end }}
111+ /// <param name="onEvent">Callback when any event raised from api server</param>
112+ /// <param name="onError">Callback when any exception was caught during watching</param>
113+ /// <param name="onClosed">Callback when the server closes the connection</param>
114+ public Watcher<{{GetReturnType api.operation "T"}}> Watch{{GetActionName api.operation name ""}}(
115+ {{ for parameter in $filteredParams}}
116+ {{GetDotNetTypeOpenApiParameter parameter}} {{GetDotNetNameOpenApiParameter parameter "true"}},
117+ {{ end }}
118+ Action<WatchEventType, {{GetReturnType api.operation "T"}}> onEvent = null,
119+ Action<Exception> onError = null,
120+ Action onClosed = null)
121+ {
122+ if (onEvent == null) throw new ArgumentNullException(nameof(onEvent));
123+
124+ var responseTask = Client.{{group}}.{{GetOperationId api.operation "WithHttpMessagesAsync"}}(
125+ {{ for parameter in api.operation.parameters}}
126+ {{GetParameterValueForWatch parameter true}},
127+ {{ end }}
128+ null,
129+ CancellationToken.None);
130+
131+ return responseTask.Watch<{{GetReturnType api.operation "T"}}, {{GetReturnType api.operation "TList"}}>(
132+ onEvent, onError, onClosed);
133+ }
134+
135+ /// <summary>
136+ /// Watch {{ToXmlDoc api.operation.description}} as async enumerable
137+ /// </summary>
138+ {{ for parameter in $filteredParams}}
139+ /// <param name="{{GetDotNetNameOpenApiParameter parameter "false"}}">
140+ /// {{ToXmlDoc parameter.description}}
141+ /// </param>
142+ {{ end }}
143+ /// <param name="onError">Callback when any exception was caught during watching</param>
144+ /// <param name="cancellationToken">Cancellation token</param>
145+ public IAsyncEnumerable<(WatchEventType, {{GetReturnType api.operation "T"}})> Watch{{GetActionName api.operation name "Async"}}(
146+ {{ for parameter in $filteredParams}}
147+ {{GetDotNetTypeOpenApiParameter parameter}} {{GetDotNetNameOpenApiParameter parameter "true"}},
148+ {{ end }}
149+ Action<Exception> onError = null,
150+ CancellationToken cancellationToken = default)
151+ {
152+ var responseTask = Client.{{group}}.{{GetOperationId api.operation "WithHttpMessagesAsync"}}(
153+ {{ for parameter in api.operation.parameters}}
154+ {{GetParameterValueForWatch parameter true}},
155+ {{ end }}
156+ null,
157+ cancellationToken);
158+
159+ return responseTask.WatchAsync<{{GetReturnType api.operation "T"}}, {{GetReturnType api.operation "TList"}}>(
160+ onError, cancellationToken);
161+ }
99162 {{end}}
100- }
163+ #endif
164+ {{end}}
165+ }
0 commit comments