mirror of
https://github.com/discourse/discourse.git
synced 2024-12-25 15:43:43 +08:00
28 lines
540 B
Ruby
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
|