FIX: Replace onebox markdown when pulling hotlinked image (#17328)

If an image is oneboxed directly, then we should replace the onebox URL with a markdown image tag. This ensures that the wrapper link points to the downloaded version rather than the original.

This regressed in bf6f8299
This commit is contained in:
David Taylor 2022-07-05 03:47:10 +01:00 committed by GitHub
parent 4730858598
commit 78e03649ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View File

@ -245,6 +245,14 @@ class InlineUploads
# Markdown inline - ![alt](http://... "image title") # Markdown inline - ![alt](http://... "image title")
InlineUploads.match_md_inline_img(raw, external_src: true, &replace) InlineUploads.match_md_inline_img(raw, external_src: true, &replace)
raw.gsub!(/^(https?:\/\/\S+)(\s?)$/) do |match|
if upload = blk.call(match)
"![](#{upload.short_url})"
else
match
end
end
raw raw
end end

View File

@ -350,6 +350,7 @@ describe Jobs::PullHotlinkedImages do
before do before do
stub_request(:head, url) stub_request(:head, url)
stub_request(:get, url).to_return(body: '') stub_request(:get, url).to_return(body: '')
stub_request(:head, image_url)
stub_request(:get, api_url).to_return(body: "{ stub_request(:get, api_url).to_return(body: "{
\"query\": { \"query\": {
@ -399,6 +400,7 @@ describe Jobs::PullHotlinkedImages do
#{url} #{url}
<img src='#{broken_image_url}'> <img src='#{broken_image_url}'>
<a href='#{url}'><img src='#{large_image_url}'></a> <a href='#{url}'><img src='#{large_image_url}'></a>
#{image_url}
MD MD
stub_image_size stub_image_size
@ -413,6 +415,7 @@ describe Jobs::PullHotlinkedImages do
https://commons.wikimedia.org/wiki/File:Brisbane_May_2013201.jpg https://commons.wikimedia.org/wiki/File:Brisbane_May_2013201.jpg
<img src='#{broken_image_url}'> <img src='#{broken_image_url}'>
<a href='#{url}'><img src='#{large_image_url}'></a> <a href='#{url}'><img src='#{large_image_url}'></a>
![](upload://z2QSs1KJWoj51uYhDjb6ifCzxH6.gif)
MD MD
expect(post.cooked).to match(/<p><img src=.*\/uploads/) expect(post.cooked).to match(/<p><img src=.*\/uploads/)