eio_okta_api/v1/groups/
list_group_users.rs1use clap::Args;
2use eio_okta_data::v2024_07_0::management::components::{
3 parameters::{PathGroupId, QueryLimit},
4 schemas::User,
5};
6use iri_string::template::{simple_context::SimpleContext, Context};
7use serde::{Deserialize, Serialize};
8use validator::Validate;
9
10use crate::{
11 traits::{IntoRequest, Pagination},
12 Endpoint, MapInto, QueryString,
13};
14
15impl Endpoint for ListGroupUsers {
16 const PATH: &'static str = "/api/v1/groups/{groupId}/users";
17
18 fn query(&self) -> Result<QueryString, crate::traits::endpoint::Error> {
19 QueryString::simple(&self.query).map_into()
20 }
21
22 fn context(&self) -> impl Context {
23 let mut context = SimpleContext::new();
24 context.insert("groupId", self.path.group_id.as_str());
25 context
26 }
27}
28
29impl IntoRequest for ListGroupUsers {
30 type Body = ();
31}
32
33impl Pagination for ListGroupUsers {
34 type Item = User;
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, Args, Validate)]
38#[remain::sorted]
39pub struct ListGroupUsers {
40 #[command(flatten)]
41 #[serde(flatten)]
42 pub path: PathGroupId,
43 #[command(flatten)]
44 #[serde(flatten)]
45 pub query: QueryLimit,
46}
47
48impl AsRef<()> for ListGroupUsers {
49 fn as_ref(&self) -> &() {
50 &()
51 }
52}
53
54impl Context for ListGroupUsers {
55 fn visit<V: iri_string::template::context::Visitor>(&self, visitor: V) -> V::Result {
56 match visitor.var_name().as_str() {
57 "groupId" => visitor.visit_string(&self.path.group_id),
58 _ => visitor.visit_undefined(),
59 }
60 }
61}