Sha256: e480b79a2026dc172339090bece3853cb5a2b18a08903641c9f7e16740f794cc
Contents?: true
Size: 1.87 KB
Versions: 1
Compression:
Stored size: 1.87 KB
Contents
module Onebox module Engine class TwitterStatusOnebox include Engine include LayoutSupport include HTML matches_regexp Regexp.new("^http(?:s)?://(?:www\\.)?(?:(?:\\w)+\\.)?(twitter)\\.com(?:/)?(?:.)*/status/") private def match @match ||= @url.match(%r{twitter\.com/.+?/status/(?<id>\d+)}) end def client Onebox.options.twitter_client end def raw if client @raw ||= OpenStruct.new(client.status(match[:id]).to_hash) else super end end def access(*keys) keys.reduce(raw) do |memo, key| memo[key] || memo[key.to_s] end end def tweet if raw.html? raw.css(".tweet-text")[0].inner_text else access(:text) end end def timestamp if raw.html? raw.css(".metadata span").inner_text else access(:created_at) end end def title if raw.html? raw.css(".stream-item-header .username").inner_text else access(:user, :screen_name) end end def avatar if raw.html? raw.css(".avatar")[2]["src"] else access(:user, :profile_image_url) end end def favorites if raw.html? raw.css(".stats li .request-favorited-popup").inner_text else access(:favorite_count) end end def retweets if raw.html? raw.css(".stats li .request-retweeted-popup").inner_text else access(:retweet_count) end end def data { link: link, tweet: tweet, timestamp: timestamp, title: title, avatar: avatar, favorites: favorites, retweets: retweets } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
onebox-1.3.9 | lib/onebox/engine/twitter_status_onebox.rb |