Packages

Idiomatic Gleam client for the YouTube Data API V3

Current section

Files

Jump to
gleetube src gleetube@decoder@common_decoder.erl
Raw

src/gleetube@decoder@common_decoder.erl

-module(gleetube@decoder@common_decoder).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gleetube/decoder/common_decoder.gleam").
-export([thumbnail_decoder/0, thumbnails_decoder/0, localized_decoder/0, page_info_decoder/0, resource_id_decoder/0, player_decoder/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.
-file("src/gleetube/decoder/common_decoder.gleam", 9).
?DOC(" Decoder for a Thumbnail.\n").
-spec thumbnail_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@common:thumbnail()).
thumbnail_decoder() ->
gleam@dynamic@decode:field(
<<"url"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Url) ->
gleam@dynamic@decode:optional_field(
<<"width"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_int/1}
),
fun(Width) ->
gleam@dynamic@decode:optional_field(
<<"height"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_int/1}
),
fun(Height) ->
gleam@dynamic@decode:success(
{thumbnail, Url, Width, Height}
)
end
)
end
)
end
).
-file("src/gleetube/decoder/common_decoder.gleam", 25).
?DOC(" Decoder for a Thumbnails set.\n").
-spec thumbnails_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@common:thumbnails()).
thumbnails_decoder() ->
gleam@dynamic@decode:optional_field(
<<"default"/utf8>>,
none,
gleam@dynamic@decode:optional(thumbnail_decoder()),
fun(Default) ->
gleam@dynamic@decode:optional_field(
<<"medium"/utf8>>,
none,
gleam@dynamic@decode:optional(thumbnail_decoder()),
fun(Medium) ->
gleam@dynamic@decode:optional_field(
<<"high"/utf8>>,
none,
gleam@dynamic@decode:optional(thumbnail_decoder()),
fun(High) ->
gleam@dynamic@decode:optional_field(
<<"standard"/utf8>>,
none,
gleam@dynamic@decode:optional(
thumbnail_decoder()
),
fun(Standard) ->
gleam@dynamic@decode:optional_field(
<<"maxres"/utf8>>,
none,
gleam@dynamic@decode:optional(
thumbnail_decoder()
),
fun(Maxres) ->
gleam@dynamic@decode:success(
{thumbnails,
Default,
Medium,
High,
Standard,
Maxres}
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/common_decoder.gleam", 55).
?DOC(" Decoder for Localized text.\n").
-spec localized_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@common:localized()).
localized_decoder() ->
gleam@dynamic@decode:optional_field(
<<"title"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Title) ->
gleam@dynamic@decode:optional_field(
<<"description"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Description) ->
gleam@dynamic@decode:success(
{localized, Title, Description}
)
end
)
end
).
-file("src/gleetube/decoder/common_decoder.gleam", 70).
?DOC(" Decoder for PageInfo.\n").
-spec page_info_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@common:page_info()).
page_info_decoder() ->
gleam@dynamic@decode:field(
<<"totalResults"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Total_results) ->
gleam@dynamic@decode:field(
<<"resultsPerPage"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Results_per_page) ->
gleam@dynamic@decode:success(
{page_info, Total_results, Results_per_page}
)
end
)
end
).
-file("src/gleetube/decoder/common_decoder.gleam", 77).
?DOC(" Decoder for ResourceId.\n").
-spec resource_id_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@common:resource_id()).
resource_id_decoder() ->
gleam@dynamic@decode:optional_field(
<<"kind"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Kind) ->
gleam@dynamic@decode:optional_field(
<<"videoId"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Video_id) ->
gleam@dynamic@decode:optional_field(
<<"channelId"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Channel_id) ->
gleam@dynamic@decode:optional_field(
<<"playlistId"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Playlist_id) ->
gleam@dynamic@decode:success(
{resource_id,
Kind,
Video_id,
Channel_id,
Playlist_id}
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/common_decoder.gleam", 102).
?DOC(" Decoder for Player.\n").
-spec player_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@common:player()).
player_decoder() ->
gleam@dynamic@decode:optional_field(
<<"embedHtml"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Embed_html) ->
gleam@dynamic@decode:optional_field(
<<"embedHeight"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_int/1}
),
fun(Embed_height) ->
gleam@dynamic@decode:optional_field(
<<"embedWidth"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_int/1}
),
fun(Embed_width) ->
gleam@dynamic@decode:success(
{player, Embed_html, Embed_height, Embed_width}
)
end
)
end
)
end
).