diff options
author | kaniini <nenolod@gmail.com> | 2019-02-22 04:38:14 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2019-02-22 04:38:14 +0000 |
commit | 5a4e2905fecfd21cf92f6b2844f15f5ee84b33f5 (patch) | |
tree | 3e3daf6bc2a1ec54d632760b2f0910c85b8da377 /lib/pleroma/web/ostatus | |
parent | eeeb8124b95871853ec41f3ccf44f6168713a8d8 (diff) | |
parent | f4bfc628ca16582ee064a2753e6a32fd891803d4 (diff) | |
download | pleroma-5a4e2905fecfd21cf92f6b2844f15f5ee84b33f5.tar.gz |
Merge branch 'fix/twittercards' into 'develop'
Fix Twitter Cards
See merge request pleroma/pleroma!815
Diffstat (limited to 'lib/pleroma/web/ostatus')
-rw-r--r-- | lib/pleroma/web/ostatus/ostatus_controller.ex | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index ee2e3d6ec..df723f638 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -156,6 +156,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do %Object{} = object = Object.normalize(activity.data["object"]) Fallback.RedirectController.redirector_with_meta(conn, %{ + activity_id: activity.id, object: object, url: Pleroma.Web.Router.Helpers.o_status_url( @@ -187,6 +188,30 @@ defmodule Pleroma.Web.OStatus.OStatusController do end end + # Returns an HTML embedded <audio> or <video> player suitable for embed iframes. + def notice_player(conn, %{"id" => id}) do + with %Activity{data: %{"type" => "Create"}} = activity <- Activity.get_by_id(id), + true <- ActivityPub.is_public?(activity), + %Object{} = object <- Object.normalize(activity.data["object"]), + %{data: %{"attachment" => [%{"url" => [url | _]} | _]}} <- object, + true <- String.starts_with?(url["mediaType"], ["audio", "video"]) do + conn + |> put_layout(:metadata_player) + |> put_resp_header("x-frame-options", "ALLOW") + |> put_resp_header( + "content-security-policy", + "default-src 'none';style-src 'self' 'unsafe-inline';img-src 'self' data: https:; media-src 'self' https:;" + ) + |> put_view(Pleroma.Web.Metadata.PlayerView) + |> render("player.html", url) + else + _error -> + conn + |> put_status(404) + |> Fallback.RedirectController.redirector(nil, 404) + end + end + defp represent_activity( conn, "activity+json", |