Skip to content

Commit 89e5905

Browse files
committed
Add possibility to search for groups with SCIM client
1 parent 3b4ef00 commit 89e5905

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

src/Scim/SimpleIdServer.Scim.Client/SCIMClient.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,26 @@ public async Task<SearchResult<ResourceTypeResult>> GetResourceTypes(Cancellatio
7676
Method = HttpMethod.Get,
7777
RequestUri = new Uri($"{GetPath(userEdp)}?{queryString}")
7878
};
79-
if(!string.IsNullOrWhiteSpace(accessToken)) request.Headers.Add("Authorization", $"Bearer {accessToken}");
79+
if (!string.IsNullOrWhiteSpace(accessToken)) request.Headers.Add("Authorization", accessToken);
80+
var httpClient = GetHttpClient();
81+
var httpResult = await httpClient.SendAsync(request, cancellationToken);
82+
httpResult.EnsureSuccessStatusCode();
83+
var json = await httpResult.Content.ReadAsStringAsync(cancellationToken);
84+
var jsonObj = JsonObject.Parse(json).AsObject();
85+
return (RepresentationSerializer.DeserializeSearchRepresentations(jsonObj), json);
86+
}
87+
88+
public async Task<(SearchResult<RepresentationResult>, string)> SearchGroups(SearchRequest searchRequest, string accessToken, CancellationToken cancellationToken)
89+
{
90+
if (_resourceTypes == null) await GetResourceTypes(cancellationToken);
91+
var groupEdp = _resourceTypes.Resources.Single(r => r.Name == "Group").Endpoint;
92+
var queryString = SerializeQueryString(searchRequest);
93+
var request = new HttpRequestMessage
94+
{
95+
Method = HttpMethod.Get,
96+
RequestUri = new Uri($"{GetPath(groupEdp)}?{queryString}")
97+
};
98+
if (!string.IsNullOrWhiteSpace(accessToken)) request.Headers.Add("Authorization", accessToken);
8099
var httpClient = GetHttpClient();
81100
var httpResult = await httpClient.SendAsync(request, cancellationToken);
82101
httpResult.EnsureSuccessStatusCode();
@@ -94,7 +113,7 @@ public async Task<RepresentationResult> GetGroup(string id, string accessToken,
94113
Method = HttpMethod.Get,
95114
RequestUri = new Uri($"{GetPath(groupEdp)}/{id}")
96115
};
97-
if (!string.IsNullOrWhiteSpace(accessToken)) request.Headers.Add("Authorization", $"Bearer {accessToken}");
116+
if (!string.IsNullOrWhiteSpace(accessToken)) request.Headers.Add("Authorization", accessToken);
98117
var httpClient = GetHttpClient();
99118
var httpResult = await httpClient.SendAsync(request, cancellationToken);
100119
httpResult.EnsureSuccessStatusCode();

src/Scim/SimpleIdServer.Scim.Client/SearchRequest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ public class SearchRequest
1111
public int Count { get; set; } = 100;
1212
[JsonPropertyName("startIndex")]
1313
public int StartIndex { get; set; }
14+
[JsonPropertyName("filter")]
15+
public string Filter { get; set; }
1416
}
1517
}

0 commit comments

Comments
 (0)