Current section
Files
Jump to
Current section
Files
src/shimmer@types@user.erl
-module(shimmer@types@user).
-compile(no_auto_import).
-export([from_map/1, from_json_string/1]).
-export_type([user/0]).
-type user() :: {user,
gleam@option:option(binary()),
boolean(),
binary(),
gleam@option:option(binary()),
integer(),
integer(),
boolean(),
binary(),
boolean()}.
-spec from_map(gleam@map:map_(gleam@dynamic:dynamic(), gleam@dynamic:dynamic())) -> {ok,
user()} |
{error, shimmer@internal@error:shimmer_error()}.
from_map(Map) ->
case begin
_pipe = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe,
shimmer@internal@map_helpers:dyn_atom(<<"avatar"/utf8>>),
gleam@dynamic:optional(fun gleam@dynamic:string/1)
)
end of
{error, _try} -> {error, _try};
{ok, Avatar} ->
case begin
_pipe@1 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@1,
shimmer@internal@map_helpers:dyn_atom(<<"bot"/utf8>>),
fun gleam@dynamic:bool/1
)
end of
{error, _try@1} -> {error, _try@1};
{ok, Bot} ->
case begin
_pipe@2 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@2,
shimmer@internal@map_helpers:dyn_atom(
<<"discriminator"/utf8>>
),
fun gleam@dynamic:string/1
)
end of
{error, _try@2} -> {error, _try@2};
{ok, Discriminator} ->
case begin
_pipe@3 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@3,
shimmer@internal@map_helpers:dyn_atom(
<<"email"/utf8>>
),
gleam@dynamic:optional(
fun gleam@dynamic:string/1
)
)
end of
{error, _try@3} -> {error, _try@3};
{ok, Email} ->
case begin
_pipe@4 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@4,
shimmer@internal@map_helpers:dyn_atom(
<<"flags"/utf8>>
),
fun gleam@dynamic:int/1
)
end of
{error, _try@4} -> {error, _try@4};
{ok, Flags} ->
case begin
_pipe@5 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@5,
shimmer@internal@map_helpers:dyn_atom(
<<"id"/utf8>>
),
fun gleam@dynamic:int/1
)
end of
{error, _try@5} -> {error, _try@5};
{ok, Id} ->
case begin
_pipe@6 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@6,
shimmer@internal@map_helpers:dyn_atom(
<<"mfa_enabled"/utf8>>
),
fun gleam@dynamic:bool/1
)
end of
{error, _try@6} -> {error, _try@6};
{ok, Mfa_enabled} ->
case begin
_pipe@7 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@7,
shimmer@internal@map_helpers:dyn_atom(
<<"username"/utf8>>
),
fun gleam@dynamic:string/1
)
end of
{error, _try@7} -> {error, _try@7};
{ok, Username} ->
case begin
_pipe@8 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@8,
shimmer@internal@map_helpers:dyn_atom(
<<"verified"/utf8>>
),
fun gleam@dynamic:bool/1
)
end of
{error, _try@8} -> {error, _try@8};
{ok, Verified} ->
{ok,
{user,
Avatar,
Bot,
Discriminator,
Email,
Flags,
Id,
Mfa_enabled,
Username,
Verified}}
end
end
end
end
end
end
end
end
end.
-spec from_json_string(binary()) -> {ok, user()} |
{error, shimmer@internal@error:shimmer_error()}.
from_json_string(Encoded) ->
User_decoder = gleam@dynamic:decode9(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7, Field@8) -> {user, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7, Field@8} end,
gleam@dynamic:field(
<<"avatar"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(<<"bot"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(
<<"discriminator"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:field(
<<"email"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(<<"flags"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(<<"mfa_enabled"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(<<"username"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"verified"/utf8>>, fun gleam@dynamic:bool/1)
),
_pipe = gleam@json:decode(Encoded, User_decoder),
gleam@result:map_error(_pipe, fun(Field@0) -> {invalid_json, Field@0} end).