eio_okta_api/v1/groups/
assign_user_to_group.rs

1use clap::Args;
2use eio_okta_data::v2024_07_0::management::components::parameters::{PathGroupId, PathUserId};
3use iri_string::template::Context;
4use serde::{Deserialize, Serialize};
5use validator::Validate;
6
7use crate::{
8  Endpoint,
9  traits::{IntoRequest, Response},
10};
11
12impl Endpoint for AssignUserToGroup {
13  const PATH: &'static str = "/api/v1/groups/{groupId}/users/{userId}";
14
15  fn context(&self) -> impl Context {
16    self.clone()
17  }
18}
19
20impl IntoRequest for AssignUserToGroup {
21  const METHOD: http::Method = http::Method::PUT;
22  type Body = ();
23}
24
25impl Response for AssignUserToGroup {
26  type Body = ();
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize, Args, Validate)]
30#[remain::sorted]
31pub struct AssignUserToGroup {
32  #[command(flatten)]
33  #[serde(flatten)]
34  pub group: PathGroupId,
35  #[command(flatten)]
36  #[serde(flatten)]
37  pub user: PathUserId,
38}
39
40impl AsRef<()> for AssignUserToGroup {
41  fn as_ref(&self) -> &() {
42    &()
43  }
44}
45
46impl Context for AssignUserToGroup {
47  fn visit<V: iri_string::template::context::Visitor>(&self, visitor: V) -> V::Result {
48    match visitor.var_name().as_str() {
49      "groupId" => visitor.visit_string(&self.group.group_id),
50      "userId" => visitor.visit_string(&self.user.user_id),
51      _ => visitor.visit_undefined(),
52    }
53  }
54}