/
hex_api_user.erl
96 lines (92 loc) · 2.74 KB
/
hex_api_user.erl
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
-module(hex_api_user).
-export([
create/4,
get/2,
me/1,
reset_password/2
]).
%% @doc
%% Gets the authenticated user.
%%
%% Examples:
%%
%% ```
%% > hex_api_user:me(hex_core:default_config()).
%% {ok, {200, ..., #{
%% <<"email">> => <<"user@example.com">>,
%% <<"full_name">> => <<"John Doe">>,
%% <<"handles">> => #{...},
%% <<"inserted_at">> => <<"2014-04-21T17:20:12Z">>,
%% <<"level">> => <<"full">>,
%% <<"updated_at">> => <<"2019-08-04T19:28:05Z">>,
%% <<"url">> => <<"https://hex.pm/api/users/user">>,
%% <<"username">> => <<"user">>
%% }}}
%% '''
%% @end
-spec me(hex_core:config()) -> hex_api:response().
me(Config) when is_map(Config) ->
hex_api:get(Config, ["users", "me"]).
%% @doc
%% Creates a new user account.
%%
%% Examples:
%%
%% ```
%% > hex_api_user:create(hex_core:default_config(), <<"user">>, <<"hunter42">>, <<"user@example.com">>).
%% {ok, {201, ..., #{
%% <<"email">> => <<"user@example.com">>,
%% <<"full_name">> => <<"John Doe">>,
%% <<"handles">> => #{...},
%% <<"inserted_at">> => <<"2014-04-21T17:20:12Z">>,
%% <<"level">> => <<"full">>,
%% <<"updated_at">> => <<"2019-08-04T19:28:05Z">>,
%% <<"url">> => <<"https://hex.pm/api/users/user">>,
%% <<"username">> => <<"user">>
%% }}}
%% '''
%% @end
-spec create(hex_core:config(), binary(), binary(), binary()) -> hex_api:response().
create(Config, Username, Password, Email)
when is_map(Config) and is_binary(Username) and is_binary(Password) and is_binary(Email) ->
Params = #{
<<"username">> => Username,
<<"password">> => Password,
<<"email">> => Email
},
hex_api:post(Config, ["users"], Params).
%% @doc
%% Resets the user's password.
%%
%% Examples:
%%
%% ```
%% > hex_api_user:reset_password(hex_core:default_config(), <<"user">>).
%% {ok, {204, ..., nil}}
%% '''
%% @end
-spec reset_password(hex_core:config(), binary()) -> hex_api:response().
reset_password(Config, Username) when is_map(Config) and is_binary(Username) ->
hex_api:post(Config, ["users", Username, "reset"], #{}).
%% @doc
%% Gets a user.
%%
%% Examples:
%%
%% ```
%% > hex_api_user:get(hex_core:default_config()).
%% {ok, {200, ..., #{
%% <<"email">> => <<"user@example.com">>,
%% <<"full_name">> => <<"John Doe">>,
%% <<"handles">> => #{...},
%% <<"inserted_at">> => <<"2014-04-21T17:20:12Z">>,
%% <<"level">> => <<"full">>,
%% <<"updated_at">> => <<"2019-08-04T19:28:05Z">>,
%% <<"url">> => <<"https://hex.pm/api/users/user">>,
%% <<"username">> => <<"user">>
%% }}}
%% '''
%% @end
-spec get(hex_core:config(), binary()) -> hex_api:response().
get(Config, Username) when is_map(Config) and is_binary(Username) ->
hex_api:get(Config, ["users", Username]).