Browse Source

html: add policy which transforms inline images to pass through the media proxy

tags/v0.9.9
William Pitcock 5 years ago
parent
commit
a7d0ecdc7c
1 changed files with 31 additions and 0 deletions
  1. +31
    -0
      lib/pleroma/html.ex

+ 31
- 0
lib/pleroma/html.ex View File

@@ -142,3 +142,34 @@ defmodule Pleroma.HTML.Scrubber.Default do

Meta.strip_everything_not_covered()
end

defmodule Pleroma.HTML.Transform.MediaProxy do
@moduledoc "Transforms inline image URIs to use MediaProxy."

alias Pleroma.Web.MediaProxy

def before_scrub(html), do: html

def scrub_attribute("img", {"src", "http" <> target}) do
media_url =
("http" <> target)
|> MediaProxy.url()

{"src", media_url}
end

def scrub_attribute(tag, attribute), do: attribute

def scrub({"img", attributes, children}) do
attributes =
attributes
|> Enum.map(fn attr -> scrub_attribute("img", attr) end)
|> Enum.reject(&is_nil(&1))

{"img", attributes, children}
end

def scrub({tag, attributes, children}), do: {tag, attributes, children}
def scrub({tag, children}), do: children
def scrub(text), do: text
end

Loading…
Cancel
Save