Skip to content

Commit 4040fbb

Browse files
committed
feat: update extensions
1 parent 5daf210 commit 4040fbb

File tree

2 files changed

+21
-13
lines changed

2 files changed

+21
-13
lines changed

src/Function.SDK.CSharp/Extensions/RequestExtensions.cs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,19 @@ public static RunFunctionResponse To(this RunFunctionRequest request, Duration t
4242
},
4343
Desired = request.Desired,
4444
Context = request.Context,
45+
Requirements = new()
4546
};
4647

4748
return resp;
4849
}
4950

51+
public static T GetKubeResource<T>(this Resource resource)
52+
{
53+
var json = JsonFormatter.Default.Format(resource.Resource_);
54+
55+
return KubernetesJson.Deserialize<T>(json);
56+
}
57+
5058
/// <summary>
5159
/// Get Observed Composite Resource from the supplied request.
5260
/// </summary>
@@ -55,9 +63,7 @@ public static RunFunctionResponse To(this RunFunctionRequest request, Duration t
5563
/// <returns></returns>
5664
public static T? GetObservedCompositeResource<T>(this RunFunctionRequest request)
5765
{
58-
var json = JsonFormatter.Default.Format(request.Observed.Composite.Resource_);
59-
60-
return KubernetesJson.Deserialize<T>(json);
66+
return request.Observed.Composite.GetKubeResource<T>();
6167
}
6268

6369
/// <summary>
@@ -92,9 +98,7 @@ public static IDictionary<string, Resource> GetDesiredComposedResources(this Run
9298
{
9399
if (request.Desired.Resources.TryGetValue(key, out var resource))
94100
{
95-
var json = JsonFormatter.Default.Format(resource.Resource_);
96-
97-
return KubernetesJson.Deserialize<T>(json);
101+
return resource.GetKubeResource<T>();
98102
}
99103

100104
return default;
@@ -110,9 +114,7 @@ public static IDictionary<string, Resource> GetDesiredComposedResources(this Run
110114
{
111115
if (request.Observed.Resources.TryGetValue(key, out var resource))
112116
{
113-
var json = JsonFormatter.Default.Format(resource.Resource_);
114-
115-
return KubernetesJson.Deserialize<T>(json);
117+
return resource.GetKubeResource<T>();
116118
}
117119

118120
return default;
@@ -124,13 +126,19 @@ public static IDictionary<string, Resource> GetDesiredComposedResources(this Run
124126
/// <param name="request">The RunFunctionRequest.</param>
125127
/// <param name="key">The Resource Key</param>
126128
/// <returns>A Required resource</returns>
127-
public static T? GetRequiredResource<T>(this RunFunctionRequest request, string key)
129+
public static List<T>? GetRequiredResource<T>(this RunFunctionRequest request, string key)
128130
{
129131
if (request.RequiredResources.TryGetValue(key, out var resource))
130132
{
131-
var json = JsonFormatter.Default.Format(resource);
133+
var list = new List<T>();
134+
135+
foreach (var item in resource.Items)
136+
{
137+
var obj = item.GetKubeResource<T>();
138+
list.Add(obj);
139+
}
132140

133-
return KubernetesJson.Deserialize<T>(json);
141+
return list;
134142
}
135143

136144
return default;

tests/Function.SDK.CSharp.Sample.Tests/UnitTest1.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public static void SetCompositeResource(this RunFunctionRequest request, IKubern
252252

253253
public static T GetResource<T>(this State state, string key)
254254
{
255-
string json = JsonFormatter.Default.Format(state.Resources[key].Resource_);
255+
var json = JsonFormatter.Default.Format(state.Resources[key].Resource_);
256256

257257
return KubernetesJson.Deserialize<T>(json);
258258
}

0 commit comments

Comments
 (0)