Current section
Files
Jump to
Current section
Files
src/telega@models@message_entity.erl
-module(telega@models@message_entity).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([decode/1, encode/1]).
-export_type([message_entity/0]).
-type message_entity() :: {message_entity,
binary(),
integer(),
integer(),
gleam@option:option(binary()),
gleam@option:option(telega@models@user:user()),
gleam@option:option(binary()),
gleam@option:option(binary())}.
-spec decode(gleam@dynamic:dynamic_()) -> {ok, message_entity()} |
{error, list(gleam@dynamic:decode_error())}.
decode(Json) ->
_pipe = Json,
(gleam@dynamic:decode7(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6) -> {message_entity, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6} end,
gleam@dynamic:field(<<"type"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"offset"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(<<"length"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:optional_field(<<"url"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:optional_field(
<<"user"/utf8>>,
fun telega@models@user:decode/1
),
gleam@dynamic:optional_field(
<<"language"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"custom_emoji_id"/utf8>>,
fun gleam@dynamic:string/1
)
))(_pipe).
-spec encode(message_entity()) -> gleam@json:json().
encode(Message_entity) ->
Entity_type = [{<<"entity_type"/utf8>>,
gleam@json:string(erlang:element(2, Message_entity))}],
Offset = [{<<"offset"/utf8>>,
gleam@json:int(erlang:element(3, Message_entity))}],
Length = [{<<"length"/utf8>>,
gleam@json:int(erlang:element(4, Message_entity))}],
Url = telega@models@common:option_to_json_object_list(
erlang:element(5, Message_entity),
<<"url"/utf8>>,
fun gleam@json:string/1
),
User = telega@models@common:option_to_json_object_list(
erlang:element(6, Message_entity),
<<"user"/utf8>>,
fun telega@models@user:encode/1
),
Language = telega@models@common:option_to_json_object_list(
erlang:element(7, Message_entity),
<<"language"/utf8>>,
fun gleam@json:string/1
),
Custom_emoji_id = telega@models@common:option_to_json_object_list(
erlang:element(8, Message_entity),
<<"custom_emoji_id"/utf8>>,
fun gleam@json:string/1
),
_pipe = [Entity_type, Offset, Length, Url, User, Language, Custom_emoji_id],
_pipe@1 = gleam@list:concat(_pipe),
gleam@json:object(_pipe@1).