discourse/lib/oneboxer/stack_exchange_onebox.rb

49 lines
1.2 KiB
Ruby
Raw Normal View History

2013-06-10 12:27:13 -04:00
require_dependency 'oneboxer/handlebars_onebox'
module Oneboxer
class StackExchangeOnebox < HandlebarsOnebox
DOMAINS = [
'stackexchange',
'stackoverflow',
'superuser',
'serverfault',
'askubuntu'
]
# http://rubular.com/r/V3T0I1VTPn
REGEX =
/^http:\/\/(?:(?:(?<subsubdomain>\w*)\.)?(?<subdomain>\w*)\.)?(?<domain>#{DOMAINS.join('|')})\.com\/(?:questions|q)\/(?<question>\d*)/
2013-06-10 12:27:13 -04:00
matcher REGEX
favicon 'stackexchange.png'
def translate_url
@url.match(REGEX) do |match|
site = if match[:domain] == 'stackexchange'
[match[:subsubdomain],match[:subdomain]].compact.join('.')
2013-06-10 12:27:13 -04:00
else
[match[:subdomain],match[:domain]].compact.join('.')
2013-06-10 12:27:13 -04:00
end
["http://api.stackexchange.com/2.1/",
"questions/#{match[:question]}",
"?site=#{site}"
].join
end
end
def parse(data)
result = JSON.parse(data)['items'].first
2013-08-15 07:01:37 -04:00
if result
result['creation_date'] =
Time.at(result['creation_date'].to_i).strftime("%I:%M%p - %d %b %y")
2013-06-10 12:27:13 -04:00
2013-08-15 07:01:37 -04:00
result['tags'] = result['tags'].take(4).join(', ')
end
2013-06-10 12:27:13 -04:00
result
end
end
end