Skip to content
Snippets Groups Projects
Unverified Commit 5b2164c6 authored by Sébastien Gaya's avatar Sébastien Gaya
Browse files

Merge branch 'main' into license-block

parents d0150d52 7997206e
No related branches found
No related tags found
No related merge requests found
......@@ -21,7 +21,7 @@ module Communication::Website::WithAssociatedObjects
has_many :permalinks,
class_name: "Communication::Website::Permalink",
dependent: :destroy
has_many :communication_blocks,
class_name: "Communication::Block",
foreign_key: :communication_website_id
......@@ -29,6 +29,22 @@ module Communication::Website::WithAssociatedObjects
end
def blocks_from_education
Communication::Block.where(about: education_programs).or(
Communication::Block.where(about: education_diplomas)
)
end
def blocks_from_research
Communication::Block.where(about: research_papers)
end
def blocks_from_university
Communication::Block.where(about: connected_people).or(
Communication::Block.where(about: connected_organizations)
)
end
def education_diplomas
has_education_diplomas? ? about.diplomas : Education::Diploma.none
end
......
......@@ -5,7 +5,10 @@ module Communication::Website::WithSecurity
list = external_domains_default
list.concat external_domains_plausible
list.concat external_domains_from_blocks_video
list.concat external_domains_from_blocks_embed
list.concat external_domains_from_blocks_embed(blocks)
list.concat external_domains_from_blocks_embed(blocks_from_education)
list.concat external_domains_from_blocks_embed(blocks_from_research)
list.concat external_domains_from_blocks_embed(blocks_from_university)
list.uniq.compact
end
......@@ -34,14 +37,14 @@ module Communication::Website::WithSecurity
list
end
def external_domains_from_blocks_embed
def external_domains_from_blocks_embed(blocks)
list = []
blocks.where(template_kind: :embed).each do |block|
blocks.where(template_kind: :embed).published.each do |block|
code = block.template.code
# https://stackoverflow.com/questions/25095176/extracting-all-urls-from-a-page-using-ruby
code.scan(/[[:lower:]]+:\/\/[^\s"]+/).each do |url|
url = CGI.unescapeHTML(url)
url = ActionController::Base.helpers.strip_tags(url)
url = ActionController::Base.helpers.strip_tags(url)
url = URI::Parser.new.escape(url)
host = URI.parse(url).host
list << host
......
......@@ -2,7 +2,8 @@ class Video::Provider
PROVIDERS = [
Vimeo,
Youtube,
Dailymotion
Dailymotion,
Peertube
]
def self.find(video_url)
......
class Video::Provider::Peertube < Video::Provider::Default
DOMAINS = ['peertube.fr', 'peertude.my.noesya.coop']
# "https://peertube.fr/w/1i848Qvi7Q3ytW2uPY8AxG"
def identifier
video_url.split('/w/').last
end
def host
video_url.split('/w/').first
end
# https://docs.joinpeertube.org/support/doc/api/embeds#quick-start
def iframe_url
"#{host}/videos/embed/#{identifier}"
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment