-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).