mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-14 09:50:40 +08:00
27 lines
540 B
Ruby
27 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
|