discourse/lib/onebox/engine/xkcd_onebox.rb
Blake Erickson 17116c440b
SECURITY: Restrict allowed URL patterns
Restrict allowed URL patterns for oneboxes.
2025-02-04 13:32:34 -03:00

33 lines
635 B
Ruby

# frozen_string_literal: true
module Onebox
module Engine
class XkcdOnebox
include Engine
include LayoutSupport
include JSON
matches_domain("xkcd.com", "www.xkcd.com", "m.xkcd.com")
always_https
def self.matches_path(path)
path.match?(%r{^/\d+$})
end
def url
"https://xkcd.com/#{match[:comic_id]}/info.0.json"
end
private
def match
@match ||= @url.match(%{xkcd\.com/(?<comic_id>\\d+)})
end
def data
{ link: @url, title: raw["safe_title"], image: raw["img"], description: raw["alt"] }
end
end
end
end