diff options
Diffstat (limited to '')
-rw-r--r-- | lib/post.ml | 21 | ||||
-rw-r--r-- | lib/post.mli | 31 |
2 files changed, 18 insertions, 34 deletions
diff --git a/lib/post.ml b/lib/post.ml index 232d9a7..3b63a11 100644 --- a/lib/post.ml +++ b/lib/post.ml @@ -25,10 +25,25 @@ type mastodon_post = { } [@@deriving yojson] [@@yojson.allow_extra_fields] -let post_of_mastodon_post = function +let mastodon_actor post = post.actor + +let post_of_mastodon_post actor_name = function | { actor; published; obj = { tag } } -> - let tags = List.map (fun { name; _ } -> name) tag in - { link = actor; summary = published; tags; published; author = actor } + let tags = + List.filter_map + (fun { name; kind; _ } -> + (* This would normally be filtered with yojson, but I couldn't get + it to work *) + if kind = "Hashtag" then Some name else None) + tag + in + { + link = actor; + summary = published; + tags; + published; + author = actor_name; + } let get_tld (link : string) = Uri.of_string link |> Uri.host_with_default ~default:"" diff --git a/lib/post.mli b/lib/post.mli deleted file mode 100644 index 9bf32ae..0000000 --- a/lib/post.mli +++ /dev/null @@ -1,31 +0,0 @@ -type t = { - link : string; - summary : string; - tags : string list; - published : string; - author : string; -} - -type mastodon_tag = { kind : string; name : string; href : string } - -val mastodon_tag_of_yojson : Yojson.Safe.t -> mastodon_tag -val yojson_of_mastodon_tag : mastodon_tag -> Yojson.Safe.t - -type mastodon_object = { tag : mastodon_tag list } - -val mastodon_object_of_yojson : Yojson.Safe.t -> mastodon_object -val yojson_of_mastodon_object : mastodon_object -> Yojson.Safe.t - -type mastodon_post = { - actor : string; - published : string; - obj : mastodon_object; -} - -val mastodon_post_of_yojson : Yojson.Safe.t -> mastodon_post -val yojson_of_mastodon_post : mastodon_post -> Yojson.Safe.t -val post_of_mastodon_post : mastodon_post -> t -val get_tld : string -> string -val db : t list ref -val add : t -> unit -val get_all : unit -> t list |