discourse/lib/onebox/engine/xkcd_onebox.rb
2023-01-09 12:10:19 +00:00

28 lines
540 B
Ruby

# frozen_string_literal: true
module Onebox
module Engine
class XkcdOnebox
include Engine
include LayoutSupport
include JSON
matches_regexp(%r{^https?://(www\.)?(m\.)?xkcd\.com/\d+})
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