diff --git a/app/models/post.rb b/app/models/post.rb index 751d8b721f1..85432556e7f 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -949,8 +949,9 @@ class Post < ActiveRecord::Base ] fragments ||= Nokogiri::HTML::fragment(self.cooked) + selectors = fragments.css("a/@href", "img/@src", "source/@src", "track/@src", "video/@poster") - links = fragments.css("a/@href", "img/@src").map do |media| + links = selectors.map do |media| src = media.value next if src.blank? diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index b7a97d7d2ee..325f4febccb 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -1528,6 +1528,9 @@ describe Post do upload2 = Fabricate(:upload) upload3 = Fabricate(:video_upload) upload4 = Fabricate(:upload) + upload5 = Fabricate(:upload) + upload6 = Fabricate(:video_upload) + upload7 = Fabricate(:upload, extension: "vtt") set_cdn_url "https://awesome.com/somepath" @@ -1542,6 +1545,11 @@ describe Post do ![](http://example.com/external.png) #{Discourse.base_url}#{upload3.short_path} + + RAW urls = [] @@ -1556,14 +1564,20 @@ describe Post do "#{GlobalSetting.cdn_url}#{upload1.url}", "#{GlobalSetting.cdn_url}#{upload4.url}", "#{Discourse.base_url}#{upload2.url}", - "#{Discourse.base_url}#{upload3.short_path}" + "#{Discourse.base_url}#{upload3.short_path}", + "#{Discourse.base_url}#{upload5.url}", + "#{Discourse.base_url}#{upload6.url}", + "#{Discourse.base_url}#{upload7.url}" ) expect(paths).to contain_exactly( upload1.url, upload4.url, upload2.url, - nil + nil, + upload5.url, + upload6.url, + upload7.url ) end