Current section
Files
Jump to
Current section
Files
src/chilp@api_typing.erl
-module(chilp@api_typing).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/chilp/api_typing.gleam").
-export([account_decoder/0, status_decoder/0, status_context_decoder/0]).
-export_type([status/0, account/0, mentions/0, status_context/0, status_tag/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(" Module to match and type JSON data from the endpoints, I just typed these by hand, so if innacurate, they might bug out.\n").
-type status() :: {status,
binary(),
binary(),
binary(),
boolean(),
binary(),
binary(),
binary(),
binary(),
binary(),
integer(),
integer(),
integer(),
integer(),
gleam@option:option(binary()),
binary(),
account(),
list(binary()),
list(mentions()),
list(status_tag())}.
-type account() :: {account,
binary(),
binary(),
binary(),
binary(),
boolean(),
boolean(),
boolean(),
boolean(),
boolean(),
binary(),
binary(),
binary(),
binary(),
binary(),
binary(),
binary(),
binary(),
integer(),
integer(),
integer(),
binary()}.
-type mentions() :: {mentions, binary(), binary(), binary(), binary()}.
-type status_context() :: {status_context, list(status()), list(status())}.
-type status_tag() :: {status_tag, binary(), binary()}.
-file("src/chilp/api_typing.gleam", 183).
-spec field_or(
binary(),
gleam@dynamic@decode:decoder(RFI),
RFI,
fun((RFI) -> gleam@dynamic@decode:decoder(RFK))
) -> gleam@dynamic@decode:decoder(RFK).
field_or(Field, Field_decoder, Default, Next) ->
gleam@dynamic@decode:optional_field(
Field,
none,
gleam@dynamic@decode:optional(Field_decoder),
fun(Val) ->
Next(
begin
_pipe = Val,
gleam@option:unwrap(_pipe, Default)
end
)
end
).
-file("src/chilp/api_typing.gleam", 128).
-spec account_decoder() -> gleam@dynamic@decode:decoder(account()).
account_decoder() ->
gleam@dynamic@decode:field(
<<"id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Id) ->
gleam@dynamic@decode:field(
<<"username"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Username) ->
gleam@dynamic@decode:field(
<<"acct"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Acct) ->
gleam@dynamic@decode:field(
<<"display_name"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Display_name) ->
gleam@dynamic@decode:field(
<<"locked"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Locked) ->
gleam@dynamic@decode:field(
<<"bot"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Bot) ->
field_or(
<<"discoverable"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
false,
fun(Discoverable) ->
gleam@dynamic@decode:field(
<<"indexable"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Indexable) ->
gleam@dynamic@decode:field(
<<"group"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(
Group
) ->
gleam@dynamic@decode:field(
<<"created_at"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Created_at
) ->
gleam@dynamic@decode:field(
<<"note"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Note
) ->
gleam@dynamic@decode:field(
<<"url"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Url
) ->
gleam@dynamic@decode:field(
<<"uri"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Uri
) ->
gleam@dynamic@decode:field(
<<"avatar"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Avatar
) ->
gleam@dynamic@decode:field(
<<"avatar_static"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Avatar_static
) ->
gleam@dynamic@decode:field(
<<"header"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Header
) ->
gleam@dynamic@decode:field(
<<"header_static"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Header_static
) ->
gleam@dynamic@decode:field(
<<"followers_count"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(
Followers_count
) ->
gleam@dynamic@decode:field(
<<"following_count"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(
Following_count
) ->
gleam@dynamic@decode:field(
<<"statuses_count"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(
Statuses_count
) ->
gleam@dynamic@decode:field(
<<"last_status_at"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Last_status_at
) ->
gleam@dynamic@decode:success(
{account,
Id,
Username,
Acct,
Display_name,
Locked,
Bot,
Discoverable,
Indexable,
Group,
Created_at,
Note,
Url,
Uri,
Avatar,
Avatar_static,
Header,
Header_static,
Followers_count,
Following_count,
Statuses_count,
Last_status_at}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/chilp/api_typing.gleam", 201).
-spec mentions_decoder() -> gleam@dynamic@decode:decoder(mentions()).
mentions_decoder() ->
gleam@dynamic@decode:field(
<<"id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Id) ->
gleam@dynamic@decode:field(
<<"username"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Username) ->
gleam@dynamic@decode:field(
<<"url"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Url) ->
gleam@dynamic@decode:field(
<<"acct"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Acct) ->
gleam@dynamic@decode:success(
{mentions, Id, Username, Url, Acct}
)
end
)
end
)
end
)
end
).
-file("src/chilp/api_typing.gleam", 224).
-spec status_tag_decoder() -> gleam@dynamic@decode:decoder(status_tag()).
status_tag_decoder() ->
gleam@dynamic@decode:field(
<<"name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Name) ->
gleam@dynamic@decode:field(
<<"url"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Url) ->
gleam@dynamic@decode:success({status_tag, Name, Url})
end
)
end
).
-file("src/chilp/api_typing.gleam", 34).
-spec status_decoder() -> gleam@dynamic@decode:decoder(status()).
status_decoder() ->
gleam@dynamic@decode:field(
<<"id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Id) ->
gleam@dynamic@decode:field(
<<"created_at"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Created_at) ->
field_or(
<<"in_reply_to_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
<<""/utf8>>,
fun(In_reply_to_id) ->
gleam@dynamic@decode:field(
<<"sensitive"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Sensitive) ->
gleam@dynamic@decode:field(
<<"spoiler_text"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Spoiler_text) ->
gleam@dynamic@decode:field(
<<"visibility"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Visibility) ->
field_or(
<<"language"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
<<""/utf8>>,
fun(Language) ->
gleam@dynamic@decode:field(
<<"uri"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Uri) ->
gleam@dynamic@decode:field(
<<"url"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Url) ->
gleam@dynamic@decode:field(
<<"replies_count"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(
Replies_count
) ->
gleam@dynamic@decode:field(
<<"reblogs_count"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(
Reblogs_count
) ->
gleam@dynamic@decode:field(
<<"favourites_count"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(
Favourites_count
) ->
gleam@dynamic@decode:field(
<<"quotes_count"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_int/1},
fun(
Quotes_count
) ->
gleam@dynamic@decode:field(
<<"edited_at"/utf8>>,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(
Edited_at
) ->
gleam@dynamic@decode:field(
<<"content"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(
Content
) ->
gleam@dynamic@decode:field(
<<"account"/utf8>>,
account_decoder(
),
fun(
Account
) ->
gleam@dynamic@decode:field(
<<"media_attachments"/utf8>>,
gleam@dynamic@decode:list(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(
Media_attachments
) ->
gleam@dynamic@decode:field(
<<"mentions"/utf8>>,
gleam@dynamic@decode:list(
mentions_decoder(
)
),
fun(
Mentions
) ->
field_or(
<<"tags"/utf8>>,
gleam@dynamic@decode:list(
status_tag_decoder(
)
),
[],
fun(
Tags
) ->
gleam@dynamic@decode:success(
{status,
Id,
Created_at,
In_reply_to_id,
Sensitive,
Spoiler_text,
Visibility,
Language,
Uri,
Url,
Replies_count,
Reblogs_count,
Favourites_count,
Quotes_count,
Edited_at,
Content,
Account,
Media_attachments,
Mentions,
Tags}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/chilp/api_typing.gleam", 213).
-spec status_context_decoder() -> gleam@dynamic@decode:decoder(status_context()).
status_context_decoder() ->
Dec = status_decoder(),
gleam@dynamic@decode:field(
<<"ancestors"/utf8>>,
gleam@dynamic@decode:list(Dec),
fun(Ancestors) ->
gleam@dynamic@decode:field(
<<"descendants"/utf8>>,
gleam@dynamic@decode:list(Dec),
fun(Descendants) ->
gleam@dynamic@decode:success(
{status_context, Ancestors, Descendants}
)
end
)
end
).