From 0e9bace13d2a98256d8bf616fa6acf1ab57fbbbd Mon Sep 17 00:00:00 2001 From: Dmitry Kuimov Date: Wed, 30 Aug 2023 19:13:08 +0300 Subject: [PATCH] feat: add crud methods for roles api --- src/Casdoor.Client/CasdoorClient.RoleApi.cs | 26 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/Casdoor.Client/CasdoorClient.RoleApi.cs b/src/Casdoor.Client/CasdoorClient.RoleApi.cs index 9fd0e6a..29e6319 100644 --- a/src/Casdoor.Client/CasdoorClient.RoleApi.cs +++ b/src/Casdoor.Client/CasdoorClient.RoleApi.cs @@ -18,14 +18,23 @@ namespace Casdoor.Client; public partial class CasdoorClient { - public virtual async Task?> GetRolesAsync(CancellationToken cancellationToken = default) + public virtual async Task?> GetRolesAsync(string? owner = null, CancellationToken cancellationToken = default) { - var queryMap = new QueryMapBuilder().Add("owner", _options.OrganizationName).QueryMap; + var queryMap = new QueryMapBuilder().Add("owner", owner ?? _options.OrganizationName).QueryMap; string url = _options.GetActionUrl("get-roles", queryMap); var result = await _httpClient.GetFromJsonAsync(url, cancellationToken: cancellationToken); return result.DeserializeData?>(); } + public virtual async Task GetRoleAsync(string name, string? owner = null, + CancellationToken cancellationToken = default) + { + var queryMap = new QueryMapBuilder().Add("id", $"{owner ?? _options.OrganizationName}/{name}").QueryMap; + string url = _options.GetActionUrl("get-role", queryMap); + var result = await _httpClient.GetFromJsonAsync(url, cancellationToken: cancellationToken); + return result.DeserializeData(); + } + public virtual async Task AddRoleAsync(CasdoorRole role, CancellationToken cancellationToken = default) { if (string.IsNullOrEmpty(role.Owner)) @@ -33,7 +42,18 @@ public partial class CasdoorClient role.Owner = CasdoorConstants.DefaultCasdoorOwner; } - var url = _options.GetActionUrl("add-role"); + string url = _options.GetActionUrl("add-role"); return await PostAsJsonAsync(url, role, cancellationToken); } + + public virtual async Task UpdateRoleAsync(CasdoorRole role, string name, string? owner = null, + CancellationToken cancellationToken = default) + { + var queryMap = new QueryMapBuilder().Add("id", $"{owner ?? _options.OrganizationName}/{name}").QueryMap; + string url = _options.GetActionUrl("update-role", queryMap); + return await PostAsJsonAsync(url, role, cancellationToken); + } + + public virtual async Task DeleteRoleAsync(CasdoorRole role, CancellationToken cancellationToken = default) => + await PostAsJsonAsync(_options.GetActionUrl("delete-role"), role, cancellationToken); }