eio_okta_api/v1/groups/
get_group.rs1use 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}