diff options
| author | Haelwenn (lanodan) Monnier <contact@hacktivis.me> | 2018-07-12 19:06:28 +0200 | 
|---|---|---|
| committer | Haelwenn (lanodan) Monnier <contact@hacktivis.me> | 2018-08-21 18:24:09 +0200 | 
| commit | 74c74decf522104cb08c600a96849e6b0fab1780 (patch) | |
| tree | f5fa80ba11929bcc4ed73e98777e431d92ccce0b /lib | |
| parent | ef4f982e2c6447733679f3e490c2666c7a795a5f (diff) | |
| download | pleroma-74c74decf522104cb08c600a96849e6b0fab1780.tar.gz pleroma-74c74decf522104cb08c600a96849e6b0fab1780.zip | |
Basic peertube support.
Diffstat (limited to 'lib')
4 files changed, 32 insertions, 10 deletions
| diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 39e2bb8a9..279bf6365 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -94,8 +94,11 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do    def fix_in_reply_to(object), do: object    def fix_context(object) do +    context = object["context"] || object["conversation"] || Utils.generate_context_id() +      object -    |> Map.put("context", object["conversation"]) +    |> Map.put("context", context) +    |> Map.put("conversation", context)    end    def fix_attachments(object) do @@ -163,7 +166,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do    # - tags    # - emoji    def handle_incoming(%{"type" => "Create", "object" => %{"type" => objtype} = object} = data) -      when objtype in ["Article", "Note"] do +      when objtype in ["Article", "Note", "Video"] do      actor = get_actor(data)      data = diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 8b41a3bec..7cdc1656b 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -128,7 +128,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do    Inserts a full object if it is contained in an activity.    """    def insert_full_object(%{"object" => %{"type" => type} = object_data}) -      when is_map(object_data) and type in ["Article", "Note"] do +      when is_map(object_data) and type in ["Article", "Note", "Video"] do      with {:ok, _} <- Object.create(object_data) do        :ok      end @@ -204,13 +204,17 @@ defmodule Pleroma.Web.ActivityPub.Utils do    end    def add_like_to_object(%Activity{data: %{"actor" => actor}}, object) do -    with likes <- [actor | object.data["likes"] || []] |> Enum.uniq() do +    likes = if is_list(object.data["likes"]), do: object.data["likes"], else: [] + +    with likes <- [actor | likes] |> Enum.uniq() do        update_likes_in_object(likes, object)      end    end    def remove_like_from_object(%Activity{data: %{"actor" => actor}}, object) do -    with likes <- (object.data["likes"] || []) |> List.delete(actor) do +    likes = if is_list(object.data["likes"]), do: object.data["likes"], else: [] + +    with likes <- likes |> List.delete(actor) do        update_likes_in_object(likes, object)      end    end @@ -357,13 +361,19 @@ defmodule Pleroma.Web.ActivityPub.Utils do    end    def add_announce_to_object(%Activity{data: %{"actor" => actor}}, object) do -    with announcements <- [actor | object.data["announcements"] || []] |> Enum.uniq() do +    announcements = +      if is_list(object.data["announcements"]), do: object.data["announcements"], else: [] + +    with announcements <- [actor | announcements] |> Enum.uniq() do        update_element_in_object("announcement", announcements, object)      end    end    def remove_announce_from_object(%Activity{data: %{"actor" => actor}}, object) do -    with announcements <- (object.data["announcements"] || []) |> List.delete(actor) do +    announcements = +      if is_list(object.data["announcements"]), do: object.data["announcements"], else: [] + +    with announcements <- announcements |> List.delete(actor) do        update_element_in_object("announcement", announcements, object)      end    end diff --git a/lib/pleroma/web/twitter_api/representers/activity_representer.ex b/lib/pleroma/web/twitter_api/representers/activity_representer.ex index 26bfb79af..9abea59a7 100644 --- a/lib/pleroma/web/twitter_api/representers/activity_representer.ex +++ b/lib/pleroma/web/twitter_api/representers/activity_representer.ex @@ -170,6 +170,15 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do        HtmlSanitizeEx.basic_html(content)        |> Formatter.emojify(object["emoji"]) +    video = +      if object["type"] == "Video" do +        vid = [object] +      else +        [] +      end + +    attachments = (object["attachment"] || []) ++ video +      %{        "id" => activity.id,        "uri" => activity.data["object"]["id"], @@ -181,7 +190,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do        "created_at" => created_at,        "in_reply_to_status_id" => object["inReplyToStatusId"],        "statusnet_conversation_id" => conversation_id, -      "attachments" => (object["attachment"] || []) |> ObjectRepresenter.enum_to_list(opts), +      "attachments" => attachments |> ObjectRepresenter.enum_to_list(opts),        "attentions" => attentions,        "fave_num" => like_count,        "repeat_num" => announcement_count, diff --git a/lib/pleroma/web/twitter_api/representers/object_representer.ex b/lib/pleroma/web/twitter_api/representers/object_representer.ex index 9af8a1691..60e30191f 100644 --- a/lib/pleroma/web/twitter_api/representers/object_representer.ex +++ b/lib/pleroma/web/twitter_api/representers/object_representer.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter do      %{        url: url["href"] |> Pleroma.Web.MediaProxy.url(), -      mimetype: url["mediaType"], +      mimetype: url["mediaType"] || url["mimeType"],        id: data["uuid"],        oembed: false      } @@ -16,7 +16,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter do    def to_map(%Object{data: %{"url" => url} = data}, _opts) when is_binary(url) do      %{        url: url |> Pleroma.Web.MediaProxy.url(), -      mimetype: data["mediaType"], +      mimetype: data["mediaType"] || url["mimeType"],        id: data["uuid"],        oembed: false      } | 
