mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-28 10:08:20 -05:00
47 lines
1 KiB
Ruby
47 lines
1 KiB
Ruby
|
require_dependency 'oneboxer/handlebars_onebox'
|
||
|
|
||
|
module Oneboxer
|
||
|
class StackExchangeOnebox < HandlebarsOnebox
|
||
|
DOMAINS = [
|
||
|
'stackexchange',
|
||
|
'stackoverflow',
|
||
|
'superuser',
|
||
|
'serverfault',
|
||
|
'askubuntu'
|
||
|
]
|
||
|
|
||
|
# http://rubular.com/r/V3T0I1VTPn
|
||
|
REGEX =
|
||
|
/^http:\/\/(?:(?<subdomain>\w*)\.)?(?<domain>#{DOMAINS.join('|')})\.com\/(?:questions|q)\/(?<question>\d*)/
|
||
|
|
||
|
matcher REGEX
|
||
|
favicon 'stackexchange.png'
|
||
|
|
||
|
def translate_url
|
||
|
@url.match(REGEX) do |match|
|
||
|
site = if match[:domain] == 'stackexchange'
|
||
|
match[:subdomain]
|
||
|
else
|
||
|
match[:domain]
|
||
|
end
|
||
|
|
||
|
["http://api.stackexchange.com/2.1/",
|
||
|
"questions/#{match[:question]}",
|
||
|
"?site=#{site}"
|
||
|
].join
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def parse(data)
|
||
|
result = JSON.parse(data)['items'].first
|
||
|
|
||
|
result['creation_date'] =
|
||
|
Time.at(result['creation_date'].to_i).strftime("%I:%M%p - %d %b %y")
|
||
|
|
||
|
result['tags'] = result['tags'].take(4).join(', ')
|
||
|
|
||
|
result
|
||
|
end
|
||
|
end
|
||
|
end
|