-module(starfeeds@types). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -define(FILEPATH, "src/starfeeds/types.gleam"). -export([enclosure_to_json/1, author_to_json/1, photo_to_json/1, video_to_json/1, extensionobject_to_json/1]). -export_type([item/0, enclosure/0, author/0, category/0, link/0, feed_options/0, photo/0, video/0, extension_objects/0, extension/0, feed/0]). -type item() :: {item, binary(), gleam@option:option(binary()), binary(), birl:time(), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(list(category())), gleam@option:option({binary(), gleam@option:option(boolean())}), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(enclosure()), gleam@option:option(list(author())), gleam@option:option(list(author())), gleam@option:option(birl:time()), gleam@option:option(binary()), list(gleam@option:option(extension()))}. -type enclosure() :: {enclosure, binary(), gleam@option:option(binary()), gleam@option:option(integer()), gleam@option:option(binary()), gleam@option:option(integer())}. -type author() :: {author, gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary())}. -type category() :: {category, gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary())}. -type link() :: {link, binary(), binary(), binary(), binary()}. -type feed_options() :: {feed_options, binary(), binary(), gleam@option:option(birl:time()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(integer()), gleam@option:option(binary()), gleam@option:option(link()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(boolean()), gleam@option:option(binary()), gleam@option:option(author()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary())}. -type photo() :: {photo, integer(), binary(), binary()}. -type video() :: {video, integer(), binary(), integer()}. -type extension_objects() :: {photos, list(photo())} | {videos, list(video())} | {unknown_objects, gleam@dynamic:dynamic_()}. -type extension() :: {extension, binary(), extension_objects()}. -type feed() :: {feed, feed_options(), list(item()), list(binary()), list(author()), list(extension())}. -file("src/starfeeds/types.gleam", 40). -spec enclosure_to_json(enclosure()) -> gleam@json:json(). enclosure_to_json(Enclosure) -> {enclosure, Url, Enc_type, Length, Title, Duration} = Enclosure, gleam@json:object( [{<<"url"/utf8>>, gleam@json:string(Url)}, {<<"enc_type"/utf8>>, case Enc_type of none -> gleam@json:null(); {some, Value} -> gleam@json:string(Value) end}, {<<"length"/utf8>>, case Length of none -> gleam@json:null(); {some, Value@1} -> gleam@json:int(Value@1) end}, {<<"title"/utf8>>, case Title of none -> gleam@json:null(); {some, Value@2} -> gleam@json:string(Value@2) end}, {<<"duration"/utf8>>, case Duration of none -> gleam@json:null(); {some, Value@3} -> gleam@json:int(Value@3) end}] ). -file("src/starfeeds/types.gleam", 72). -spec author_to_json(author()) -> gleam@json:json(). author_to_json(Author) -> {author, Name, Email, Url, Avatar} = Author, gleam@json:object([{<<"name"/utf8>>, case Name of none -> gleam@json:null(); {some, Value} -> gleam@json:string(Value) end}, {<<"email"/utf8>>, case Email of none -> gleam@json:null(); {some, Value@1} -> gleam@json:string(Value@1) end}, {<<"url"/utf8>>, case Url of none -> gleam@json:null(); {some, Value@2} -> gleam@json:string(Value@2) end}, {<<"avatar"/utf8>>, case Avatar of none -> gleam@json:null(); {some, Value@3} -> gleam@json:string(Value@3) end}]). -file("src/starfeeds/types.gleam", 134). -spec photo_to_json(photo()) -> gleam@json:json(). photo_to_json(Photo) -> {photo, Id, Url, Caption} = Photo, gleam@json:object( [{<<"id"/utf8>>, gleam@json:int(Id)}, {<<"url"/utf8>>, gleam@json:string(Url)}, {<<"caption"/utf8>>, gleam@json:string(Caption)}] ). -file("src/starfeeds/types.gleam", 147). -spec video_to_json(video()) -> gleam@json:json(). video_to_json(Video) -> {video, Id, Title, Duration_seconds} = Video, gleam@json:object( [{<<"id"/utf8>>, gleam@json:int(Id)}, {<<"title"/utf8>>, gleam@json:string(Title)}, {<<"duration_seconds"/utf8>>, gleam@json:int(Duration_seconds)}] ). -file("src/starfeeds/types.gleam", 156). -spec extensionobject_to_json(gleam@dict:dict(binary(), extension_objects())) -> gleam@json:json(). extensionobject_to_json(Object) -> _pipe = Object, _pipe@1 = maps:to_list(_pipe), _pipe@2 = gleam@list:map( _pipe@1, fun(Kv) -> {Key, Value} = Kv, Out = case Value of {photos, Photo_list} -> gleam@json:array(Photo_list, fun photo_to_json/1); {videos, Video_list} -> gleam@json:array(Video_list, fun video_to_json/1); {unknown_objects, _} -> Unknown_list = [gleam@json:object( [{<<"any"/utf8>>, gleam@json:null()}] )], gleam@json:array(Unknown_list, fun(J) -> J end) end, {Key, Out} end ), gleam@json:object(_pipe@2).