Packages

Idiomatic Gleam client for the YouTube Data API V3

Current section

Files

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

src/gleetube@decoder@video_decoder.erl

-module(gleetube@decoder@video_decoder).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gleetube/decoder/video_decoder.gleam").
-export([video_decoder/0, video_list_response_decoder/0, video_get_rating_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/video_decoder.gleam", 122).
-spec video_snippet_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_snippet()).
video_snippet_decoder() ->
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(
<<"channelId"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Channel_id) ->
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(
<<"thumbnails"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleetube@decoder@common_decoder:thumbnails_decoder(
)
),
fun(Thumbnails) ->
gleam@dynamic@decode:optional_field(
<<"channelTitle"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Channel_title) ->
gleam@dynamic@decode:optional_field(
<<"tags"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:list(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
)
),
fun(Tags) ->
gleam@dynamic@decode:optional_field(
<<"categoryId"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Category_id) ->
gleam@dynamic@decode:optional_field(
<<"liveBroadcastContent"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(
Live_broadcast_content
) ->
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(
<<"defaultAudioLanguage"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(
Default_audio_language
) ->
gleam@dynamic@decode:success(
{video_snippet,
Published_at,
Channel_id,
Title,
Description,
Thumbnails,
Channel_title,
Tags,
Category_id,
Live_broadcast_content,
Default_language,
Localized,
Default_audio_language}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 258).
-spec region_restriction_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:region_restriction()).
region_restriction_decoder() ->
gleam@dynamic@decode:optional_field(
<<"allowed"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:list(
{decoder, fun gleam@dynamic@decode:decode_string/1}
)
),
fun(Allowed) ->
gleam@dynamic@decode:optional_field(
<<"blocked"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:list(
{decoder, fun gleam@dynamic@decode:decode_string/1}
)
),
fun(Blocked) ->
gleam@dynamic@decode:success(
{region_restriction, Allowed, Blocked}
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 199).
-spec video_content_details_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_content_details()).
video_content_details_decoder() ->
gleam@dynamic@decode:optional_field(
<<"duration"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Duration) ->
gleam@dynamic@decode:optional_field(
<<"dimension"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Dimension) ->
gleam@dynamic@decode:optional_field(
<<"definition"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Definition) ->
gleam@dynamic@decode:optional_field(
<<"caption"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Caption) ->
gleam@dynamic@decode:optional_field(
<<"licensedContent"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_bool/1}
),
fun(Licensed_content) ->
gleam@dynamic@decode:optional_field(
<<"regionRestriction"/utf8>>,
none,
gleam@dynamic@decode:optional(
region_restriction_decoder()
),
fun(Region_restriction) ->
gleam@dynamic@decode:optional_field(
<<"contentRating"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:dict(
{decoder,
fun gleam@dynamic@decode:decode_string/1},
{decoder,
fun gleam@dynamic@decode:decode_string/1}
)
),
fun(Content_rating) ->
gleam@dynamic@decode:optional_field(
<<"projection"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Projection) ->
gleam@dynamic@decode:optional_field(
<<"hasCustomThumbnail"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_bool/1}
),
fun(
Has_custom_thumbnail
) ->
gleam@dynamic@decode:success(
{video_content_details,
Duration,
Dimension,
Definition,
Caption,
Licensed_content,
Region_restriction,
Content_rating,
Projection,
Has_custom_thumbnail}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 272).
-spec video_statistics_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_statistics()).
video_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(
<<"likeCount"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Like_count) ->
gleam@dynamic@decode:optional_field(
<<"dislikeCount"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Dislike_count) ->
gleam@dynamic@decode:optional_field(
<<"commentCount"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Comment_count) ->
gleam@dynamic@decode:success(
{video_statistics,
View_count,
Like_count,
Dislike_count,
Comment_count}
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 301).
-spec video_status_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_status()).
video_status_decoder() ->
gleam@dynamic@decode:optional_field(
<<"uploadStatus"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Upload_status) ->
gleam@dynamic@decode:optional_field(
<<"failureReason"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Failure_reason) ->
gleam@dynamic@decode:optional_field(
<<"rejectionReason"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Rejection_reason) ->
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(
<<"publishAt"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Publish_at) ->
gleam@dynamic@decode:optional_field(
<<"license"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(License) ->
gleam@dynamic@decode:optional_field(
<<"embeddable"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_bool/1}
),
fun(Embeddable) ->
gleam@dynamic@decode:optional_field(
<<"publicStatsViewable"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_bool/1}
),
fun(
Public_stats_viewable
) ->
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(
{video_status,
Upload_status,
Failure_reason,
Rejection_reason,
Privacy_status,
Publish_at,
License,
Embeddable,
Public_stats_viewable,
Made_for_kids,
Self_declared_made_for_kids}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 366).
-spec video_topic_details_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_topic_details()).
video_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(
<<"relevantTopicIds"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:list(
{decoder, fun gleam@dynamic@decode:decode_string/1}
)
),
fun(Relevant_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(
{video_topic_details,
Topic_ids,
Relevant_topic_ids,
Topic_categories}
)
end
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 389).
-spec video_recording_details_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_recording_details()).
video_recording_details_decoder() ->
gleam@dynamic@decode:optional_field(
<<"recordingDate"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Recording_date) ->
gleam@dynamic@decode:success(
{video_recording_details, Recording_date}
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 398).
-spec video_live_streaming_details_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_live_streaming_details()).
video_live_streaming_details_decoder() ->
gleam@dynamic@decode:optional_field(
<<"actualStartTime"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Actual_start_time) ->
gleam@dynamic@decode:optional_field(
<<"actualEndTime"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Actual_end_time) ->
gleam@dynamic@decode:optional_field(
<<"scheduledStartTime"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Scheduled_start_time) ->
gleam@dynamic@decode:optional_field(
<<"scheduledEndTime"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Scheduled_end_time) ->
gleam@dynamic@decode:optional_field(
<<"concurrentViewers"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Concurrent_viewers) ->
gleam@dynamic@decode:optional_field(
<<"activeLiveChatId"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Active_live_chat_id) ->
gleam@dynamic@decode:success(
{video_live_streaming_details,
Actual_start_time,
Actual_end_time,
Scheduled_start_time,
Scheduled_end_time,
Concurrent_viewers,
Active_live_chat_id}
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 51).
?DOC(" Decoder for a single Video resource.\n").
-spec video_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video()).
video_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(
video_snippet_decoder()
),
fun(Snippet) ->
gleam@dynamic@decode:optional_field(
<<"contentDetails"/utf8>>,
none,
gleam@dynamic@decode:optional(
video_content_details_decoder()
),
fun(Content_details) ->
gleam@dynamic@decode:optional_field(
<<"status"/utf8>>,
none,
gleam@dynamic@decode:optional(
video_status_decoder()
),
fun(Status) ->
gleam@dynamic@decode:optional_field(
<<"statistics"/utf8>>,
none,
gleam@dynamic@decode:optional(
video_statistics_decoder(
)
),
fun(Statistics) ->
gleam@dynamic@decode:optional_field(
<<"topicDetails"/utf8>>,
none,
gleam@dynamic@decode:optional(
video_topic_details_decoder(
)
),
fun(
Topic_details
) ->
gleam@dynamic@decode:optional_field(
<<"player"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleetube@decoder@common_decoder:player_decoder(
)
),
fun(
Player
) ->
gleam@dynamic@decode:optional_field(
<<"recordingDetails"/utf8>>,
none,
gleam@dynamic@decode:optional(
video_recording_details_decoder(
)
),
fun(
Recording_details
) ->
gleam@dynamic@decode:optional_field(
<<"liveStreamingDetails"/utf8>>,
none,
gleam@dynamic@decode:optional(
video_live_streaming_details_decoder(
)
),
fun(
Live_streaming_details
) ->
gleam@dynamic@decode:success(
{video,
Kind,
Etag,
Id,
Snippet,
Content_details,
Status,
Statistics,
Topic_details,
Player,
Recording_details,
Live_streaming_details}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 13).
?DOC(" Decoder for a VideoListResponse.\n").
-spec video_list_response_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_list_response()).
video_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(
video_decoder()
),
fun(Items) ->
gleam@dynamic@decode:success(
{video_list_response,
Kind,
Etag,
Next_page_token,
Prev_page_token,
Page_info,
Items}
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 463).
-spec video_rating_item_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_rating_item()).
video_rating_item_decoder() ->
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(
<<"rating"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Rating) ->
gleam@dynamic@decode:success(
{video_rating_item, Video_id, Rating}
)
end
)
end
).
-file("src/gleetube/decoder/video_decoder.gleam", 442).
?DOC(" Decoder for VideoGetRatingResponse.\n").
-spec video_get_rating_response_decoder() -> gleam@dynamic@decode:decoder(gleetube@model@video:video_get_rating_response()).
video_get_rating_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(
<<"items"/utf8>>,
[],
gleam@dynamic@decode:list(video_rating_item_decoder()),
fun(Items) ->
gleam@dynamic@decode:success(
{video_get_rating_response, Kind, Etag, Items}
)
end
)
end
)
end
).