eio_okta_api/v1/groups/
get_group.rs

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