Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
d9f40b05
Commit
d9f40b05
authored
Dec 30, 2018
by
Rin Toshaka
Browse files
Added get_stripped_html_for_object. Renamed a few things
parent
bce152ab
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/common_api/utils.ex
View file @
d9f40b05
...
...
@@ -262,10 +262,13 @@ def emoji_from_profile(%{info: _info} = user) do
end
)
end
def
get_scrubbed_html_for_object
(
content
,
scrubber
,
activity
)
when
is_atom
(
scrubber
)
do
get_scrubbed_html_for_object
(
content
,
[
scrubber
],
activity
)
end
@doc
"""
Get sanitized HTML from cache, or scrub it and save to cache.
"""
def
get_scrubbed_html
(
def
get_scrubbed_html
_for_object
(
content
,
scrubbers
,
%{
data:
%{
"object"
=>
object
}}
=
activity
...
...
@@ -281,7 +284,7 @@ def get_scrubbed_html(
{
new_scrubber_cache
,
scrubbed_html
}
=
Enum
.
map_reduce
(
scrubber_cache
,
nil
,
fn
entry
,
_
content
->
entry
,
content
->
if
Map
.
keys
(
entry
[
"scrubbers"
])
==
Map
.
keys
(
signature
)
do
if
entry
[
"scrubbers"
]
==
signature
do
{
entry
,
entry
[
"content"
]}
...
...
@@ -289,6 +292,8 @@ def get_scrubbed_html(
# Remove the entry if scrubber version is outdated
{
nil
,
nil
}
end
else
{
entry
,
content
}
end
end
)
...
...
@@ -297,15 +302,30 @@ def get_scrubbed_html(
if
scrubbed_html
==
nil
or
new_scrubber_cache
!=
scrubber_cache
do
scrubbed_html
=
HTML
.
filter_tags
(
content
,
scrubbers
)
new_scrubber_cache
=
[%{
:scrubbers
=>
signature
,
:content
=>
scrubbed_html
}
|
new_scrubber_cache
]
new_scrubber_cache
=
[
%{
:scrubbers
=>
signature
,
:content
=>
scrubbed_html
}
|
new_scrubber_cache
]
update_scrubber_cache
(
activity
,
new_scrubber_cache
)
scrubbed_html
else
scrubbed_html
end
scrubbed_html
end
defp
generate_scrubber_signature
(
scrubbers
)
do
Enum
.
reduce
(
scrubbers
,
%{},
fn
scrubber
,
signature
->
Map
.
put
(
signature
,
to_string
(
scrubber
),
scrubber
.
version
)
Map
.
put
(
signature
,
to_string
(
scrubber
),
# If a scrubber does not have a version(e.g HtmlSanitizeEx.Scrubber) it is assumed it is always 0)
if
Kernel
.
function_exported?
(
scrubber
,
:version
,
0
)
do
scrubber
.
version
else
0
end
)
end
)
end
...
...
@@ -317,4 +337,8 @@ defp update_scrubber_cache(activity, scrubber_cache) do
{
:ok
,
_struct
}
=
Repo
.
update
(
cng
)
end
def
get_stripped_html_for_object
(
content
,
activity
)
do
get_scrubbed_html_for_object
(
content
,
[
HtmlSanitizeEx
.
Scrubber
.
StripTags
],
activity
)
end
end
lib/pleroma/web/mastodon_api/views/status_view.ex
View file @
d9f40b05
...
...
@@ -120,7 +120,7 @@ def render("status.json", %{activity: %{data: %{"object" => object}} = activity}
content
=
object
|>
render_content
()
|>
Utils
.
get_scrubbed_html
(
User
.
html_filter_policy
(
opts
[
:for
]),
activity
)
|>
Utils
.
get_scrubbed_html
_for_object
(
User
.
html_filter_policy
(
opts
[
:for
]),
activity
)
%{
id:
to_string
(
activity
.
id
),
...
...
lib/pleroma/web/twitter_api/views/activity_view.ex
View file @
d9f40b05
...
...
@@ -15,7 +15,6 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
alias
Pleroma
.
User
alias
Pleroma
.
Repo
alias
Pleroma
.
Formatter
alias
Pleroma
.
HTML
import
Ecto
.
Query
require
Logger
...
...
@@ -245,14 +244,14 @@ def render(
html
=
content
|>
Utils
.
get_scrubbed_html
(
User
.
html_filter_policy
(
opts
[
:for
]),
activity
)
|>
Utils
.
get_scrubbed_html
_for_object
(
User
.
html_filter_policy
(
opts
[
:for
]),
activity
)
|>
Formatter
.
emojify
(
object
[
"emoji"
])
text
=
if
content
do
content
|>
String
.
replace
(
~r/<br\s?\/
?>
/
,
"
\n
"
)
|>
HTML
.
strip_tags
(
)
|>
Utils
.
get_stripped_html_for_object
(
activity
)
end
reply_parent
=
Activity
.
get_in_reply_to_activity
(
activity
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment