From ad715c87736c28d6dd53b577346775feda94c6ba Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 10 Jan 2025 04:45:48 +0100 Subject: [PATCH] api: support the "planner" access level --- CHANGELOG.md | 5 +++++ src/api/common.rs | 6 ++++++ src/api/groups/access_requests/approve.rs | 7 +++++++ src/api/paged.rs | 3 +++ src/api/projects/access_requests/approve.rs | 7 +++++++ src/api/projects/access_tokens/create.rs | 4 ++++ src/systemhooks.rs | 2 ++ 7 files changed, 34 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f1e1413..891cd296 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ * Add `api::projects::variables` to list and delete project-level CI/CD variables. +## Changes + + * Add support for `Planner` access levels where necessary. This access level + is new in GitLab 17.7. + # v0.1707.0 ## Additions diff --git a/src/api/common.rs b/src/api/common.rs index 65cb0155..6c0a8f6b 100644 --- a/src/api/common.rs +++ b/src/api/common.rs @@ -29,6 +29,8 @@ pub enum AccessLevel { Minimal, /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). @@ -50,6 +52,7 @@ impl AccessLevel { AccessLevel::Maintainer => "maintainer", AccessLevel::Developer => "developer", AccessLevel::Reporter => "reporter", + AccessLevel::Planner => "planner", AccessLevel::Guest => "guest", AccessLevel::Minimal => "minimal", AccessLevel::Anonymous => "anonymous", @@ -64,6 +67,7 @@ impl AccessLevel { AccessLevel::Maintainer => 40, AccessLevel::Developer => 30, AccessLevel::Reporter => 20, + AccessLevel::Planner => 15, AccessLevel::Guest => 10, AccessLevel::Minimal => 5, AccessLevel::Anonymous => 0, @@ -464,6 +468,7 @@ mod tests { (AccessLevel::Anonymous, "anonymous", 0), (AccessLevel::Minimal, "minimal", 5), (AccessLevel::Guest, "guest", 10), + (AccessLevel::Planner, "planner", 15), (AccessLevel::Reporter, "reporter", 20), (AccessLevel::Developer, "developer", 30), (AccessLevel::Maintainer, "maintainer", 40), @@ -482,6 +487,7 @@ mod tests { let items = &[ AccessLevel::Anonymous, AccessLevel::Guest, + AccessLevel::Planner, AccessLevel::Reporter, AccessLevel::Developer, AccessLevel::Maintainer, diff --git a/src/api/groups/access_requests/approve.rs b/src/api/groups/access_requests/approve.rs index e9919581..5a66168c 100644 --- a/src/api/groups/access_requests/approve.rs +++ b/src/api/groups/access_requests/approve.rs @@ -19,6 +19,8 @@ pub enum GroupAccessLevel { Minimal, /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). @@ -37,6 +39,7 @@ impl GroupAccessLevel { GroupAccessLevel::Maintainer => "maintainer", GroupAccessLevel::Developer => "developer", GroupAccessLevel::Reporter => "reporter", + GroupAccessLevel::Planner => "planner", GroupAccessLevel::Guest => "guest", GroupAccessLevel::Minimal => "minimal", GroupAccessLevel::Anonymous => "anonymous", @@ -50,6 +53,7 @@ impl GroupAccessLevel { GroupAccessLevel::Maintainer => 40, GroupAccessLevel::Developer => 30, GroupAccessLevel::Reporter => 20, + GroupAccessLevel::Planner => 15, GroupAccessLevel::Guest => 10, GroupAccessLevel::Minimal => 5, GroupAccessLevel::Anonymous => 0, @@ -123,6 +127,7 @@ mod tests { (GroupAccessLevel::Anonymous, AccessLevel::Anonymous), (GroupAccessLevel::Minimal, AccessLevel::Minimal), (GroupAccessLevel::Guest, AccessLevel::Guest), + (GroupAccessLevel::Planner, AccessLevel::Planner), (GroupAccessLevel::Reporter, AccessLevel::Reporter), (GroupAccessLevel::Developer, AccessLevel::Developer), (GroupAccessLevel::Maintainer, AccessLevel::Maintainer), @@ -141,6 +146,7 @@ mod tests { (GroupAccessLevel::Anonymous, "anonymous", 0), (GroupAccessLevel::Minimal, "minimal", 5), (GroupAccessLevel::Guest, "guest", 10), + (GroupAccessLevel::Planner, "planner", 15), (GroupAccessLevel::Reporter, "reporter", 20), (GroupAccessLevel::Developer, "developer", 30), (GroupAccessLevel::Maintainer, "maintainer", 40), @@ -159,6 +165,7 @@ mod tests { GroupAccessLevel::Anonymous, GroupAccessLevel::Minimal, GroupAccessLevel::Guest, + GroupAccessLevel::Planner, GroupAccessLevel::Reporter, GroupAccessLevel::Developer, GroupAccessLevel::Maintainer, diff --git a/src/api/paged.rs b/src/api/paged.rs index cba23e77..160f6f62 100644 --- a/src/api/paged.rs +++ b/src/api/paged.rs @@ -32,6 +32,9 @@ pub use self::link_header::LinkHeaderParseError; pub use self::pagination::Pagination; pub use self::pagination::PaginationError; +// pub use self::page::page; +// pub use self::page::Page; + pub use self::all_at_once::paged; pub use self::all_at_once::Paged; diff --git a/src/api/projects/access_requests/approve.rs b/src/api/projects/access_requests/approve.rs index 2a15cff0..b9570042 100644 --- a/src/api/projects/access_requests/approve.rs +++ b/src/api/projects/access_requests/approve.rs @@ -15,6 +15,8 @@ use crate::api::endpoint_prelude::*; pub enum ProjectAccessLevel { /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). @@ -33,6 +35,7 @@ impl ProjectAccessLevel { ProjectAccessLevel::Maintainer => "maintainer", ProjectAccessLevel::Developer => "developer", ProjectAccessLevel::Reporter => "reporter", + ProjectAccessLevel::Planner => "planner", ProjectAccessLevel::Guest => "guest", } } @@ -44,6 +47,7 @@ impl ProjectAccessLevel { ProjectAccessLevel::Maintainer => 40, ProjectAccessLevel::Developer => 30, ProjectAccessLevel::Reporter => 20, + ProjectAccessLevel::Planner => 15, ProjectAccessLevel::Guest => 10, } } @@ -113,6 +117,7 @@ mod tests { fn common_access_level_consisent() { let items = &[ (ProjectAccessLevel::Guest, AccessLevel::Guest), + (ProjectAccessLevel::Planner, AccessLevel::Planner), (ProjectAccessLevel::Reporter, AccessLevel::Reporter), (ProjectAccessLevel::Developer, AccessLevel::Developer), (ProjectAccessLevel::Maintainer, AccessLevel::Maintainer), @@ -129,6 +134,7 @@ mod tests { fn access_level_as_str() { let items = &[ (ProjectAccessLevel::Guest, "guest", 10), + (ProjectAccessLevel::Planner, "planner", 15), (ProjectAccessLevel::Reporter, "reporter", 20), (ProjectAccessLevel::Developer, "developer", 30), (ProjectAccessLevel::Maintainer, "maintainer", 40), @@ -145,6 +151,7 @@ mod tests { fn access_level_ordering() { let items = &[ ProjectAccessLevel::Guest, + ProjectAccessLevel::Planner, ProjectAccessLevel::Reporter, ProjectAccessLevel::Developer, ProjectAccessLevel::Maintainer, diff --git a/src/api/projects/access_tokens/create.rs b/src/api/projects/access_tokens/create.rs index 6bbb6cc7..55f8759f 100644 --- a/src/api/projects/access_tokens/create.rs +++ b/src/api/projects/access_tokens/create.rs @@ -66,6 +66,8 @@ impl ParamValue<'static> for ProjectAccessTokenScope { pub enum ProjectAccessTokenAccessLevel { /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). @@ -80,6 +82,7 @@ impl From for AccessLevel { fn from(p: ProjectAccessTokenAccessLevel) -> Self { match p { ProjectAccessTokenAccessLevel::Guest => Self::Guest, + ProjectAccessTokenAccessLevel::Planner => Self::Planner, ProjectAccessTokenAccessLevel::Reporter => Self::Reporter, ProjectAccessTokenAccessLevel::Developer => Self::Developer, ProjectAccessTokenAccessLevel::Maintainer => Self::Maintainer, @@ -197,6 +200,7 @@ mod tests { let items = &[ (ProjectAccessTokenAccessLevel::Guest, AccessLevel::Guest), + (ProjectAccessTokenAccessLevel::Planner, AccessLevel::Planner), ( ProjectAccessTokenAccessLevel::Reporter, AccessLevel::Reporter, diff --git a/src/systemhooks.rs b/src/systemhooks.rs index 922825b5..ed381249 100644 --- a/src/systemhooks.rs +++ b/src/systemhooks.rs @@ -102,6 +102,8 @@ pub enum ProjectMemberEvent { pub enum HumanAccessLevel { /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). -- GitLab