1 |
|
-module(mongoose_graphql_helper). |
2 |
|
|
3 |
|
-export([check_user/2]). |
4 |
|
|
5 |
|
-export([format_result/2, make_error/2, make_error/3, null_to_default/2]). |
6 |
|
|
7 |
|
-include("jlib.hrl"). |
8 |
|
-include("mongoose_graphql_types.hrl"). |
9 |
|
|
10 |
|
-spec format_result(InResult, Context) -> OutResult when |
11 |
|
InResult :: {atom(), iodata() | integer()}, |
12 |
|
Context :: map(), |
13 |
|
OutResult :: {ok, binary() | integer()} | {error, resolver_error()}. |
14 |
|
format_result(Result, Context) -> |
15 |
97 |
case Result of |
16 |
1 |
{ok, Val} when is_integer(Val) -> {ok, Val}; |
17 |
58 |
{ok, Msg} -> {ok, iolist_to_binary(Msg)}; |
18 |
38 |
{ErrCode, Msg} -> make_error(ErrCode, Msg, Context) |
19 |
|
end. |
20 |
|
|
21 |
|
-spec make_error({atom(), iodata()}, map()) -> {error, resolver_error()}. |
22 |
|
make_error({Reason, Msg}, Context) -> |
23 |
38 |
make_error(Reason, Msg, Context). |
24 |
|
|
25 |
|
-spec make_error(atom(), iodata(), map()) -> {error, resolver_error()}. |
26 |
|
make_error(Reason, Msg, Context) -> |
27 |
79 |
{error, #resolver_error{reason = Reason, msg = iolist_to_binary(Msg), context = Context}}. |
28 |
|
|
29 |
|
-spec check_user(jid:jid(), boolean()) -> {ok, mongooseim:host_type()} | {error, term()}. |
30 |
|
check_user(#jid{lserver = LServer} = Jid, CheckAuth) -> |
31 |
9 |
case mongoose_domain_api:get_domain_host_type(LServer) of |
32 |
|
{ok, HostType} -> |
33 |
8 |
check_auth(HostType, Jid, CheckAuth); |
34 |
|
_ -> |
35 |
1 |
{error, #{what => unknown_domain, domain => LServer}} |
36 |
|
end. |
37 |
|
|
38 |
|
check_auth(HostType, _Jid, false) -> |
39 |
4 |
{ok, HostType}; |
40 |
|
check_auth(HostType, Jid, true) -> |
41 |
4 |
case ejabberd_auth:does_user_exist(HostType, Jid, stored) of |
42 |
|
true -> |
43 |
3 |
{ok, HostType}; |
44 |
|
false -> |
45 |
1 |
{error, #{what => unknown_user, jid => jid:to_binary(Jid)}} |
46 |
|
end. |
47 |
|
|
48 |
|
null_to_default(null, Default) -> |
49 |
4 |
Default; |
50 |
|
null_to_default(Value, _Default) -> |
51 |
44 |
Value. |