Packages

Idiomatic Gleam client for the YouTube Data API V3

Current section

Files

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

src/gleetube@decoder@channel_decoder.erl

-module(gleetube@decoder@channel_decoder).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gleetube/decoder/channel_decoder.gleam").
-export([channel_decoder/0, channel_list_response_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/channel_decoder.gleam", 129).
-spec channel_snippet_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel_snippet()).
channel_snippet_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:optional_field(
<<"customUrl"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Custom_url) ->
gleam@dynamic@decode:optional_field(
<<"publishedAt"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Published_at) ->
gleam@dynamic@decode:optional_field(
<<"thumbnails"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleetube@decoder@common_decoder:thumbnails_decoder(
)
),
fun(Thumbnails) ->
gleam@dynamic@decode:optional_field(
<<"defaultLanguage"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Default_language) ->
gleam@dynamic@decode:optional_field(
<<"localized"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleetube@decoder@common_decoder:localized_decoder(
)
),
fun(Localized) ->
gleam@dynamic@decode:optional_field(
<<"country"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Country) ->
gleam@dynamic@decode:success(
{channel_snippet,
Title,
Description,
Custom_url,
Published_at,
Thumbnails,
Default_language,
Localized,
Country}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 191).
-spec related_playlists_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:related_playlists()).
related_playlists_decoder() ->
gleam@dynamic@decode:optional_field(
<<"likes"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Likes) ->
gleam@dynamic@decode:optional_field(
<<"uploads"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Uploads) ->
gleam@dynamic@decode:success(
{related_playlists, Likes, Uploads}
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 182).
-spec channel_content_details_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel_content_details()).
channel_content_details_decoder() ->
gleam@dynamic@decode:optional_field(
<<"relatedPlaylists"/utf8>>,
none,
gleam@dynamic@decode:optional(related_playlists_decoder()),
fun(Related_playlists) ->
gleam@dynamic@decode:success(
{channel_content_details, Related_playlists}
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 205).
-spec channel_statistics_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel_statistics()).
channel_statistics_decoder() ->
gleam@dynamic@decode:optional_field(
<<"viewCount"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(View_count) ->
gleam@dynamic@decode:optional_field(
<<"subscriberCount"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Subscriber_count) ->
gleam@dynamic@decode:optional_field(
<<"hiddenSubscriberCount"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_bool/1}
),
fun(Hidden_subscriber_count) ->
gleam@dynamic@decode:optional_field(
<<"videoCount"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Video_count) ->
gleam@dynamic@decode:success(
{channel_statistics,
View_count,
Subscriber_count,
Hidden_subscriber_count,
Video_count}
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 234).
-spec channel_topic_details_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel_topic_details()).
channel_topic_details_decoder() ->
gleam@dynamic@decode:optional_field(
<<"topicIds"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:list(
{decoder, fun gleam@dynamic@decode:decode_string/1}
)
),
fun(Topic_ids) ->
gleam@dynamic@decode:optional_field(
<<"topicCategories"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:list(
{decoder, fun gleam@dynamic@decode:decode_string/1}
)
),
fun(Topic_categories) ->
gleam@dynamic@decode:success(
{channel_topic_details, Topic_ids, Topic_categories}
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 248).
-spec channel_status_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel_status()).
channel_status_decoder() ->
gleam@dynamic@decode:optional_field(
<<"privacyStatus"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Privacy_status) ->
gleam@dynamic@decode:optional_field(
<<"isLinked"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_bool/1}
),
fun(Is_linked) ->
gleam@dynamic@decode:optional_field(
<<"longUploadsStatus"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Long_uploads_status) ->
gleam@dynamic@decode:optional_field(
<<"madeForKids"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_bool/1}
),
fun(Made_for_kids) ->
gleam@dynamic@decode:optional_field(
<<"selfDeclaredMadeForKids"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_bool/1}
),
fun(Self_declared_made_for_kids) ->
gleam@dynamic@decode:success(
{channel_status,
Privacy_status,
Is_linked,
Long_uploads_status,
Made_for_kids,
Self_declared_made_for_kids}
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 299).
-spec branding_channel_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:branding_channel()).
branding_channel_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:optional_field(
<<"keywords"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Keywords) ->
gleam@dynamic@decode:optional_field(
<<"defaultTab"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Default_tab) ->
gleam@dynamic@decode:optional_field(
<<"trackingAnalyticsAccountId"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Tracking_analytics_account_id) ->
gleam@dynamic@decode:optional_field(
<<"unsubscribedTrailer"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Unsubscribed_trailer) ->
gleam@dynamic@decode:optional_field(
<<"defaultLanguage"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Default_language) ->
gleam@dynamic@decode:optional_field(
<<"country"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Country) ->
gleam@dynamic@decode:success(
{branding_channel,
Title,
Description,
Keywords,
Default_tab,
Tracking_analytics_account_id,
Unsubscribed_trailer,
Default_language,
Country}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 352).
-spec branding_image_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:branding_image()).
branding_image_decoder() ->
gleam@dynamic@decode:optional_field(
<<"bannerExternalUrl"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Banner_external_url) ->
gleam@dynamic@decode:success({branding_image, Banner_external_url})
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 283).
-spec channel_branding_settings_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel_branding_settings()).
channel_branding_settings_decoder() ->
gleam@dynamic@decode:optional_field(
<<"channel"/utf8>>,
none,
gleam@dynamic@decode:optional(branding_channel_decoder()),
fun(Ch) ->
gleam@dynamic@decode:optional_field(
<<"image"/utf8>>,
none,
gleam@dynamic@decode:optional(branding_image_decoder()),
fun(Image) ->
gleam@dynamic@decode:success(
{channel_branding_settings, Ch, Image}
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 361).
-spec channel_content_owner_details_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel_content_owner_details()).
channel_content_owner_details_decoder() ->
gleam@dynamic@decode:optional_field(
<<"contentOwner"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Content_owner) ->
gleam@dynamic@decode:optional_field(
<<"timeLinked"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Time_linked) ->
gleam@dynamic@decode:success(
{channel_content_owner_details,
Content_owner,
Time_linked}
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 55).
?DOC(" Decoder for a single Channel resource.\n").
-spec channel_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel()).
channel_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(
<<"etag"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Etag) ->
gleam@dynamic@decode:optional_field(
<<"id"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Id) ->
gleam@dynamic@decode:optional_field(
<<"snippet"/utf8>>,
none,
gleam@dynamic@decode:optional(
channel_snippet_decoder()
),
fun(Snippet) ->
gleam@dynamic@decode:optional_field(
<<"contentDetails"/utf8>>,
none,
gleam@dynamic@decode:optional(
channel_content_details_decoder()
),
fun(Content_details) ->
gleam@dynamic@decode:optional_field(
<<"statistics"/utf8>>,
none,
gleam@dynamic@decode:optional(
channel_statistics_decoder()
),
fun(Statistics) ->
gleam@dynamic@decode:optional_field(
<<"topicDetails"/utf8>>,
none,
gleam@dynamic@decode:optional(
channel_topic_details_decoder(
)
),
fun(Topic_details) ->
gleam@dynamic@decode:optional_field(
<<"status"/utf8>>,
none,
gleam@dynamic@decode:optional(
channel_status_decoder(
)
),
fun(Status) ->
gleam@dynamic@decode:optional_field(
<<"brandingSettings"/utf8>>,
none,
gleam@dynamic@decode:optional(
channel_branding_settings_decoder(
)
),
fun(
Branding_settings
) ->
gleam@dynamic@decode:optional_field(
<<"contentOwnerDetails"/utf8>>,
none,
gleam@dynamic@decode:optional(
channel_content_owner_details_decoder(
)
),
fun(
Content_owner_details
) ->
gleam@dynamic@decode:optional_field(
<<"localizations"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:dict(
{decoder,
fun gleam@dynamic@decode:decode_string/1},
gleetube@decoder@common_decoder:localized_decoder(
)
)
),
fun(
Localizations
) ->
gleam@dynamic@decode:success(
{channel,
Kind,
Etag,
Id,
Snippet,
Content_details,
Statistics,
Topic_details,
Status,
Branding_settings,
Content_owner_details,
Localizations}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/channel_decoder.gleam", 13).
?DOC(" Decoder for a ChannelListResponse.\n").
-spec channel_list_response_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@channel:channel_list_response()).
channel_list_response_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(
<<"etag"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Etag) ->
gleam@dynamic@decode:optional_field(
<<"nextPageToken"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Next_page_token) ->
gleam@dynamic@decode:optional_field(
<<"prevPageToken"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Prev_page_token) ->
gleam@dynamic@decode:optional_field(
<<"pageInfo"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleetube@decoder@common_decoder:page_info_decoder(
)
),
fun(Page_info) ->
gleam@dynamic@decode:optional_field(
<<"items"/utf8>>,
[],
gleam@dynamic@decode:list(
channel_decoder()
),
fun(Items) ->
gleam@dynamic@decode:success(
{channel_list_response,
Kind,
Etag,
Next_page_token,
Prev_page_token,
Page_info,
Items}
)
end
)
end
)
end
)
end
)
end
)
end
).