1 |
|
-module(mongoose_graphql_session_helper). |
2 |
|
|
3 |
|
-export([format_session/1, format_sessions/1, format_status_user/1, format_status_users/1]). |
4 |
|
|
5 |
|
-ignore_xref([format_session/1, format_status_user/1]). |
6 |
|
|
7 |
|
-type session_data() :: map(). |
8 |
|
-type session_list() :: [{ok, session_data()}]. |
9 |
|
-type status_user_data() :: map(). |
10 |
|
-type status_user_list() :: [{ok, status_user_data()}]. |
11 |
|
|
12 |
|
-export_type([session_data/0, session_list/0, status_user_data/0, status_user_list/0]). |
13 |
|
|
14 |
|
-spec format_sessions([mongoose_session_api:session_info()]) -> session_list(). |
15 |
|
format_sessions(Sessions) -> |
16 |
4 |
lists:map(fun(S) -> {ok, format_session(S)} end, Sessions). |
17 |
|
|
18 |
|
-spec format_session(mongoose_session_api:session_info()) -> session_data(). |
19 |
|
format_session({USR, Conn, IPS, PORT, Prio, NodeS, Uptime}) -> |
20 |
7 |
#{<<"user">> => iolist_to_binary(USR), |
21 |
|
<<"connection">> => iolist_to_binary(Conn), |
22 |
|
<<"ip">> => iolist_to_binary(IPS), |
23 |
|
<<"port">> => PORT, |
24 |
|
<<"priority">> => Prio, |
25 |
|
<<"node">> => iolist_to_binary(NodeS), |
26 |
|
<<"uptime">> => Uptime}. |
27 |
|
|
28 |
|
-spec format_status_users([mongoose_session_api:session_info()]) -> session_list(). |
29 |
|
format_status_users(Sessions) -> |
30 |
3 |
lists:map(fun(S) -> {ok, format_status_user(S)} end, Sessions). |
31 |
|
|
32 |
|
-spec format_status_user(mongoose_session_api:status_user_info()) -> status_user_data(). |
33 |
|
format_status_user({User, Server, Res, Prio, StatusText}) -> |
34 |
4 |
#{<<"user">> => jid:to_binary({User, Server, Res}), |
35 |
|
<<"priority">> => Prio, |
36 |
|
<<"text">> => iolist_to_binary(StatusText)}. |