Skip to content

Commit a5d803c

Browse files
committed
Add support for retrieving the merge request approval state
1 parent bb74ce0 commit a5d803c

File tree

8 files changed

+72
-1
lines changed

8 files changed

+72
-1
lines changed

NGitLab.Mock/Clients/MergeRequestApprovalClient.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using NGitLab.Models;
33

44
namespace NGitLab.Mock.Clients;
@@ -31,4 +31,9 @@ public void ChangeApprovers(MergeRequestApproversChange approversChange)
3131
{
3232
throw new NotImplementedException();
3333
}
34+
35+
public MergeRequestApprovalState GetApprovalState()
36+
{
37+
throw new NotImplementedException();
38+
}
3439
}

NGitLab/IMergeRequestApprovalClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ public interface IMergeRequestApprovalClient
1414
/// Available only for bot users based on project or group tokens.
1515
/// </summary>
1616
void ResetApprovals();
17+
18+
MergeRequestApprovalState GetApprovalState();
1719
}

NGitLab/Impl/MergeRequestApprovalClient.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class MergeRequestApprovalClient : IMergeRequestApprovalClient
1414
private readonly string _approversPath;
1515
private readonly string _approvePath;
1616
private readonly string _resetApprovalsPath;
17+
private readonly string _approvalStatePath;
1718

1819
public MergeRequestApprovalClient(API api, string projectPath, long mergeRequestIid)
1920
{
@@ -23,6 +24,7 @@ public MergeRequestApprovalClient(API api, string projectPath, long mergeRequest
2324
_approversPath = projectPath + "/merge_requests/" + iid + "/approvers";
2425
_approvePath = projectPath + "/merge_requests/" + iid + "/approve";
2526
_resetApprovalsPath = projectPath + "/merge_requests/" + iid + "/reset_approvals";
27+
_approvalStatePath = projectPath + "/merge_requests/" + iid + "/approval_state";
2628
}
2729

2830
public MergeRequestApprovals Approvals => _api.Get().To<MergeRequestApprovals>(_approvalsPath);
@@ -33,4 +35,6 @@ public MergeRequestApprovals ApproveMergeRequest(MergeRequestApproveRequest requ
3335
public void ChangeApprovers(MergeRequestApproversChange approversChange) => _api.Put().With(approversChange).To<MergeRequestApproversChange>(_approversPath);
3436

3537
public void ResetApprovals() => _api.Put().Execute(_resetApprovalsPath);
38+
39+
public MergeRequestApprovalState GetApprovalState() => _api.Get().To<MergeRequestApprovalState>(_approvalStatePath);
3640
}

NGitLab/Models/ApprovalRule.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,21 @@ public sealed class ApprovalRule
1616
[JsonPropertyName("name")]
1717
public string Name { get; set; }
1818

19+
/// <summary>
20+
/// The type of the approval rule.
21+
/// </summary>
22+
[JsonPropertyName("rule_type")]
23+
public string RuleType { get; set; }
24+
25+
/// <summary>
26+
/// The eligible approvers for the rule.
27+
/// </summary>
28+
[JsonPropertyName("eligible_approvers")]
29+
public User[] EligibleApprovers { get; set; }
30+
31+
/// <summary>
32+
/// The number of required approvers.
33+
/// </summary>
1934
[JsonPropertyName("approvals_required")]
2035
public int ApprovalsRequired { get; set; }
2136

NGitLab/Models/MergeRequestApprovals.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,12 @@ public class MergeRequestApproveRequest
4646
[JsonPropertyName("approval_password")]
4747
public string ApprovalPassword { get; set; }
4848
}
49+
50+
public class MergeRequestApprovalState
51+
{
52+
[JsonPropertyName("approval_rules_overwritten")]
53+
public bool ApprovalRulesOverwritten { get; set; }
54+
55+
[JsonPropertyName("rules")]
56+
public ApprovalRule[] Rules { get; set; }
57+
}

NGitLab/PublicAPI/net472/PublicAPI.Unshipped.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ NGitLab.IMergeRequestApprovalClient
401401
NGitLab.IMergeRequestApprovalClient.Approvals.get -> NGitLab.Models.MergeRequestApprovals
402402
NGitLab.IMergeRequestApprovalClient.ApproveMergeRequest(NGitLab.Models.MergeRequestApproveRequest request = null) -> NGitLab.Models.MergeRequestApprovals
403403
NGitLab.IMergeRequestApprovalClient.ChangeApprovers(NGitLab.Models.MergeRequestApproversChange approversChange) -> void
404+
NGitLab.IMergeRequestApprovalClient.GetApprovalState() -> NGitLab.Models.MergeRequestApprovalState
404405
NGitLab.IMergeRequestApprovalClient.ResetApprovals() -> void
405406
NGitLab.IMergeRequestChangeClient
406407
NGitLab.IMergeRequestChangeClient.MergeRequestChange.get -> NGitLab.Models.MergeRequestChange
@@ -717,6 +718,7 @@ NGitLab.Impl.MergeRequestApprovalClient
717718
NGitLab.Impl.MergeRequestApprovalClient.Approvals.get -> NGitLab.Models.MergeRequestApprovals
718719
NGitLab.Impl.MergeRequestApprovalClient.ApproveMergeRequest(NGitLab.Models.MergeRequestApproveRequest request = null) -> NGitLab.Models.MergeRequestApprovals
719720
NGitLab.Impl.MergeRequestApprovalClient.ChangeApprovers(NGitLab.Models.MergeRequestApproversChange approversChange) -> void
721+
NGitLab.Impl.MergeRequestApprovalClient.GetApprovalState() -> NGitLab.Models.MergeRequestApprovalState
720722
NGitLab.Impl.MergeRequestApprovalClient.MergeRequestApprovalClient(NGitLab.Impl.API api, string projectPath, long mergeRequestIid) -> void
721723
NGitLab.Impl.MergeRequestApprovalClient.ResetApprovals() -> void
722724
NGitLab.Impl.MergeRequestClient
@@ -1291,6 +1293,8 @@ NGitLab.Models.ApprovalRule
12911293
NGitLab.Models.ApprovalRule.ApprovalRule() -> void
12921294
NGitLab.Models.ApprovalRule.ApprovalsRequired.get -> int
12931295
NGitLab.Models.ApprovalRule.ApprovalsRequired.set -> void
1296+
NGitLab.Models.ApprovalRule.EligibleApprovers.get -> NGitLab.Models.User[]
1297+
NGitLab.Models.ApprovalRule.EligibleApprovers.set -> void
12941298
NGitLab.Models.ApprovalRule.Groups.get -> NGitLab.Models.Group[]
12951299
NGitLab.Models.ApprovalRule.Groups.set -> void
12961300
NGitLab.Models.ApprovalRule.Name.get -> string
@@ -1299,6 +1303,8 @@ NGitLab.Models.ApprovalRule.ProtectedBranch.get -> NGitLab.Models.Branch[]
12991303
NGitLab.Models.ApprovalRule.ProtectedBranch.set -> void
13001304
NGitLab.Models.ApprovalRule.RuleId.get -> long
13011305
NGitLab.Models.ApprovalRule.RuleId.set -> void
1306+
NGitLab.Models.ApprovalRule.RuleType.get -> string
1307+
NGitLab.Models.ApprovalRule.RuleType.set -> void
13021308
NGitLab.Models.ApprovalRule.Users.get -> NGitLab.Models.User[]
13031309
NGitLab.Models.ApprovalRule.Users.set -> void
13041310
NGitLab.Models.ApprovalRuleCreate
@@ -2906,6 +2912,12 @@ NGitLab.Models.MergeRequestApprovals.UserCanApprove.get -> bool
29062912
NGitLab.Models.MergeRequestApprovals.UserCanApprove.set -> void
29072913
NGitLab.Models.MergeRequestApprovals.UserHasApproved.get -> bool
29082914
NGitLab.Models.MergeRequestApprovals.UserHasApproved.set -> void
2915+
NGitLab.Models.MergeRequestApprovalState
2916+
NGitLab.Models.MergeRequestApprovalState.ApprovalRulesOverwritten.get -> bool
2917+
NGitLab.Models.MergeRequestApprovalState.ApprovalRulesOverwritten.set -> void
2918+
NGitLab.Models.MergeRequestApprovalState.MergeRequestApprovalState() -> void
2919+
NGitLab.Models.MergeRequestApprovalState.Rules.get -> NGitLab.Models.ApprovalRule[]
2920+
NGitLab.Models.MergeRequestApprovalState.Rules.set -> void
29092921
NGitLab.Models.MergeRequestApprove
29102922
NGitLab.Models.MergeRequestApprove.ApprovalPassword.get -> string
29112923
NGitLab.Models.MergeRequestApprove.ApprovalPassword.set -> void

NGitLab/PublicAPI/net8.0/PublicAPI.Unshipped.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,7 @@ NGitLab.IMergeRequestApprovalClient
400400
NGitLab.IMergeRequestApprovalClient.Approvals.get -> NGitLab.Models.MergeRequestApprovals
401401
NGitLab.IMergeRequestApprovalClient.ApproveMergeRequest(NGitLab.Models.MergeRequestApproveRequest request = null) -> NGitLab.Models.MergeRequestApprovals
402402
NGitLab.IMergeRequestApprovalClient.ChangeApprovers(NGitLab.Models.MergeRequestApproversChange approversChange) -> void
403+
NGitLab.IMergeRequestApprovalClient.GetApprovalState() -> NGitLab.Models.MergeRequestApprovalState
403404
NGitLab.IMergeRequestApprovalClient.ResetApprovals() -> void
404405
NGitLab.IMergeRequestChangeClient
405406
NGitLab.IMergeRequestChangeClient.MergeRequestChange.get -> NGitLab.Models.MergeRequestChange
@@ -716,6 +717,7 @@ NGitLab.Impl.MergeRequestApprovalClient
716717
NGitLab.Impl.MergeRequestApprovalClient.Approvals.get -> NGitLab.Models.MergeRequestApprovals
717718
NGitLab.Impl.MergeRequestApprovalClient.ApproveMergeRequest(NGitLab.Models.MergeRequestApproveRequest request = null) -> NGitLab.Models.MergeRequestApprovals
718719
NGitLab.Impl.MergeRequestApprovalClient.ChangeApprovers(NGitLab.Models.MergeRequestApproversChange approversChange) -> void
720+
NGitLab.Impl.MergeRequestApprovalClient.GetApprovalState() -> NGitLab.Models.MergeRequestApprovalState
719721
NGitLab.Impl.MergeRequestApprovalClient.MergeRequestApprovalClient(NGitLab.Impl.API api, string projectPath, long mergeRequestIid) -> void
720722
NGitLab.Impl.MergeRequestApprovalClient.ResetApprovals() -> void
721723
NGitLab.Impl.MergeRequestClient
@@ -1290,6 +1292,8 @@ NGitLab.Models.ApprovalRule
12901292
NGitLab.Models.ApprovalRule.ApprovalRule() -> void
12911293
NGitLab.Models.ApprovalRule.ApprovalsRequired.get -> int
12921294
NGitLab.Models.ApprovalRule.ApprovalsRequired.set -> void
1295+
NGitLab.Models.ApprovalRule.EligibleApprovers.get -> NGitLab.Models.User[]
1296+
NGitLab.Models.ApprovalRule.EligibleApprovers.set -> void
12931297
NGitLab.Models.ApprovalRule.Groups.get -> NGitLab.Models.Group[]
12941298
NGitLab.Models.ApprovalRule.Groups.set -> void
12951299
NGitLab.Models.ApprovalRule.Name.get -> string
@@ -1298,6 +1302,8 @@ NGitLab.Models.ApprovalRule.ProtectedBranch.get -> NGitLab.Models.Branch[]
12981302
NGitLab.Models.ApprovalRule.ProtectedBranch.set -> void
12991303
NGitLab.Models.ApprovalRule.RuleId.get -> long
13001304
NGitLab.Models.ApprovalRule.RuleId.set -> void
1305+
NGitLab.Models.ApprovalRule.RuleType.get -> string
1306+
NGitLab.Models.ApprovalRule.RuleType.set -> void
13011307
NGitLab.Models.ApprovalRule.Users.get -> NGitLab.Models.User[]
13021308
NGitLab.Models.ApprovalRule.Users.set -> void
13031309
NGitLab.Models.ApprovalRuleCreate
@@ -2905,6 +2911,12 @@ NGitLab.Models.MergeRequestApprovals.UserCanApprove.get -> bool
29052911
NGitLab.Models.MergeRequestApprovals.UserCanApprove.set -> void
29062912
NGitLab.Models.MergeRequestApprovals.UserHasApproved.get -> bool
29072913
NGitLab.Models.MergeRequestApprovals.UserHasApproved.set -> void
2914+
NGitLab.Models.MergeRequestApprovalState
2915+
NGitLab.Models.MergeRequestApprovalState.ApprovalRulesOverwritten.get -> bool
2916+
NGitLab.Models.MergeRequestApprovalState.ApprovalRulesOverwritten.set -> void
2917+
NGitLab.Models.MergeRequestApprovalState.MergeRequestApprovalState() -> void
2918+
NGitLab.Models.MergeRequestApprovalState.Rules.get -> NGitLab.Models.ApprovalRule[]
2919+
NGitLab.Models.MergeRequestApprovalState.Rules.set -> void
29082920
NGitLab.Models.MergeRequestApprove
29092921
NGitLab.Models.MergeRequestApprove.ApprovalPassword.get -> string
29102922
NGitLab.Models.MergeRequestApprove.ApprovalPassword.set -> void

NGitLab/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ NGitLab.IMergeRequestApprovalClient
401401
NGitLab.IMergeRequestApprovalClient.Approvals.get -> NGitLab.Models.MergeRequestApprovals
402402
NGitLab.IMergeRequestApprovalClient.ApproveMergeRequest(NGitLab.Models.MergeRequestApproveRequest request = null) -> NGitLab.Models.MergeRequestApprovals
403403
NGitLab.IMergeRequestApprovalClient.ChangeApprovers(NGitLab.Models.MergeRequestApproversChange approversChange) -> void
404+
NGitLab.IMergeRequestApprovalClient.GetApprovalState() -> NGitLab.Models.MergeRequestApprovalState
404405
NGitLab.IMergeRequestApprovalClient.ResetApprovals() -> void
405406
NGitLab.IMergeRequestChangeClient
406407
NGitLab.IMergeRequestChangeClient.MergeRequestChange.get -> NGitLab.Models.MergeRequestChange
@@ -717,6 +718,7 @@ NGitLab.Impl.MergeRequestApprovalClient
717718
NGitLab.Impl.MergeRequestApprovalClient.Approvals.get -> NGitLab.Models.MergeRequestApprovals
718719
NGitLab.Impl.MergeRequestApprovalClient.ApproveMergeRequest(NGitLab.Models.MergeRequestApproveRequest request = null) -> NGitLab.Models.MergeRequestApprovals
719720
NGitLab.Impl.MergeRequestApprovalClient.ChangeApprovers(NGitLab.Models.MergeRequestApproversChange approversChange) -> void
721+
NGitLab.Impl.MergeRequestApprovalClient.GetApprovalState() -> NGitLab.Models.MergeRequestApprovalState
720722
NGitLab.Impl.MergeRequestApprovalClient.MergeRequestApprovalClient(NGitLab.Impl.API api, string projectPath, long mergeRequestIid) -> void
721723
NGitLab.Impl.MergeRequestApprovalClient.ResetApprovals() -> void
722724
NGitLab.Impl.MergeRequestClient
@@ -1291,6 +1293,8 @@ NGitLab.Models.ApprovalRule
12911293
NGitLab.Models.ApprovalRule.ApprovalRule() -> void
12921294
NGitLab.Models.ApprovalRule.ApprovalsRequired.get -> int
12931295
NGitLab.Models.ApprovalRule.ApprovalsRequired.set -> void
1296+
NGitLab.Models.ApprovalRule.EligibleApprovers.get -> NGitLab.Models.User[]
1297+
NGitLab.Models.ApprovalRule.EligibleApprovers.set -> void
12941298
NGitLab.Models.ApprovalRule.Groups.get -> NGitLab.Models.Group[]
12951299
NGitLab.Models.ApprovalRule.Groups.set -> void
12961300
NGitLab.Models.ApprovalRule.Name.get -> string
@@ -1299,6 +1303,8 @@ NGitLab.Models.ApprovalRule.ProtectedBranch.get -> NGitLab.Models.Branch[]
12991303
NGitLab.Models.ApprovalRule.ProtectedBranch.set -> void
13001304
NGitLab.Models.ApprovalRule.RuleId.get -> long
13011305
NGitLab.Models.ApprovalRule.RuleId.set -> void
1306+
NGitLab.Models.ApprovalRule.RuleType.get -> string
1307+
NGitLab.Models.ApprovalRule.RuleType.set -> void
13021308
NGitLab.Models.ApprovalRule.Users.get -> NGitLab.Models.User[]
13031309
NGitLab.Models.ApprovalRule.Users.set -> void
13041310
NGitLab.Models.ApprovalRuleCreate
@@ -2906,6 +2912,12 @@ NGitLab.Models.MergeRequestApprovals.UserCanApprove.get -> bool
29062912
NGitLab.Models.MergeRequestApprovals.UserCanApprove.set -> void
29072913
NGitLab.Models.MergeRequestApprovals.UserHasApproved.get -> bool
29082914
NGitLab.Models.MergeRequestApprovals.UserHasApproved.set -> void
2915+
NGitLab.Models.MergeRequestApprovalState
2916+
NGitLab.Models.MergeRequestApprovalState.ApprovalRulesOverwritten.get -> bool
2917+
NGitLab.Models.MergeRequestApprovalState.ApprovalRulesOverwritten.set -> void
2918+
NGitLab.Models.MergeRequestApprovalState.MergeRequestApprovalState() -> void
2919+
NGitLab.Models.MergeRequestApprovalState.Rules.get -> NGitLab.Models.ApprovalRule[]
2920+
NGitLab.Models.MergeRequestApprovalState.Rules.set -> void
29092921
NGitLab.Models.MergeRequestApprove
29102922
NGitLab.Models.MergeRequestApprove.ApprovalPassword.get -> string
29112923
NGitLab.Models.MergeRequestApprove.ApprovalPassword.set -> void

0 commit comments

Comments
 (0)