userlib/remote/
user_remote.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
use cached::proc_macro::cached;
use common::enums::roles::Roles;
use common::model::status_message::StatusMessage;
use common::remote::{get, post, services};
use hyper::HeaderMap;
use uuid::Uuid;

use crate::dto::auth_request::AuthRequest;
use crate::dto::get_token_response::GetTokenResponse;
use crate::dto::public_teacher_response::PublicTeacherResponse;
use crate::dto::short_user_reponse::ShortUserResponse;
use crate::dto::user_with_roles_response::UserWithRolesResponse;

pub fn find_robo_teacher(headers: HeaderMap) -> Result<UserWithRolesResponse, String> {
    get::<UserWithRolesResponse>(
        services::USER_API,
        String::from("/user/getRoboTeacher"),
        headers,
    )
}

/// Returns a `ShortUserResponse`. Gives information about the provided user id.
///
/// # Example
///
/// # Data
///
/// *URL:* get - "user/{user_id}"
///
/// *Required Role:* Registered
#[cached(
time=5,
key = "Uuid",
convert = r#"{ id }"#
)]
pub fn find_by_id(id: Uuid, headers: HeaderMap) -> Result<ShortUserResponse, String> {
    get::<ShortUserResponse>(services::USER_API, format!("/user/{}", id), headers)
}
pub fn get_medics_or_admins_for_org(org_id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
    get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findMedicsOrAdmins/{}", org_id), headers)
}
pub fn get_admins_for_org(org_id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
    get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findAdmins/{}", org_id), headers)
}
pub fn find_parent_with_childs(id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
    get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findParentWithChilds/{}", id), headers)
}
pub fn find_parents_for_users(ids: Vec<Uuid>, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
    post(services::USER_API, format!("/user/findParentsForUserList"), headers, ids)
}

pub fn find_by_ids(
    ids: Vec<Uuid>,
    headers: HeaderMap,
) -> Result<Vec<ShortUserResponse>, String> {
    post::<_, Vec<ShortUserResponse>>(
        services::USER_API,
        String::from("/user/getUsersByListIds"),
        headers,
        ids,
    )
}
pub fn find_by_roles_and_org(
    ids: Vec<String>,
    headers: HeaderMap,
) -> Result<Vec<ShortUserResponse>, String> {
    post::<_, Vec<ShortUserResponse>>(
        services::USER_API,
        String::from("/user/findByRolesAndOrg"),
        headers,
        ids,
    )
}
pub fn find_by_roles(
    roles: Vec<Roles>,
    headers: HeaderMap,
) -> Result<Vec<ShortUserResponse>, String> {
    post::<_, Vec<ShortUserResponse>>(
        services::USER_API,
        String::from("/user/getUsersByRoles"),
        headers,
        roles,
    )
}

pub fn public_get_teachers_info(
    uuids: Vec<Uuid>,
    headers: HeaderMap,
) -> Result<Vec<PublicTeacherResponse>, String> {
    post::<_, Vec<PublicTeacherResponse>>(
        services::USER_API,
        String::from(format!("{}", "/publicUser/getTeachersInfo")),
        headers,
        uuids,
    )
}

pub fn get_token(headers: HeaderMap, dto: AuthRequest) -> Result<GetTokenResponse, String> {
    post::<_, GetTokenResponse>(
        services::USER_API,
        String::from("/user/getToken"),
        headers,
        dto,
    )
}
pub fn get_no_mfa_token(headers: HeaderMap, dto: AuthRequest) -> Result<GetTokenResponse, String> {
    post::<_, GetTokenResponse>(
        services::USER_API,
        String::from("/user/getNoMfaToken"),
        headers,
        dto,
    )
}

pub fn check_is_chat_available(headers: HeaderMap) -> Result<StatusMessage, String> {
    get(
        services::USER_API,
        "/user/checkIsChatAvailable".to_string(),
        headers,
    )
}