Current section

Files

Jump to
telega src telega@models@user.erl
Raw

src/telega@models@user.erl

-module(telega@models@user).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([decode/1, encode/1]).
-export_type([user/0]).
-type user() :: {user,
integer(),
boolean(),
binary(),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(boolean()),
gleam@option:option(boolean())}.
-spec decode(gleam@dynamic:dynamic_()) -> {ok, user()} |
{error, list(gleam@dynamic:decode_error())}.
decode(Json) ->
_pipe = Json,
(gleam@dynamic:decode8(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7) -> {user, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7} end,
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(<<"is_bot"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(<<"first_name"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:optional_field(
<<"last_name"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"username"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"language_code"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"is_premium"/utf8>>,
fun gleam@dynamic:bool/1
),
gleam@dynamic:optional_field(
<<"added_to_attachment_menu"/utf8>>,
fun gleam@dynamic:bool/1
)
))(_pipe).
-spec encode(user()) -> gleam@json:json().
encode(User) ->
Id = [{<<"id"/utf8>>, gleam@json:int(erlang:element(2, User))}],
Is_bot = [{<<"is_bot"/utf8>>, gleam@json:bool(erlang:element(3, User))}],
First_name = [{<<"first_name"/utf8>>,
gleam@json:string(erlang:element(4, User))}],
Last_name = telega@models@common:option_to_json_object_list(
erlang:element(5, User),
<<"last_name"/utf8>>,
fun gleam@json:string/1
),
Username = telega@models@common:option_to_json_object_list(
erlang:element(6, User),
<<"username"/utf8>>,
fun gleam@json:string/1
),
Language_code = telega@models@common:option_to_json_object_list(
erlang:element(7, User),
<<"language_code"/utf8>>,
fun gleam@json:string/1
),
Is_premium = telega@models@common:option_to_json_object_list(
erlang:element(8, User),
<<"is_premium"/utf8>>,
fun gleam@json:bool/1
),
Added_to_attachment_menu = telega@models@common:option_to_json_object_list(
erlang:element(9, User),
<<"added_to_attachment_menu"/utf8>>,
fun gleam@json:bool/1
),
_pipe = [Id,
Is_bot,
First_name,
Last_name,
Username,
Language_code,
Is_premium,
Added_to_attachment_menu],
_pipe@1 = gleam@list:concat(_pipe),
gleam@json:object(_pipe@1).