Sha256: afeb859080980bd093eb38aafee9d70177a222d48a6dac5494c2feda8580bf55
Contents?: true
Size: 1.88 KB
Versions: 3
Compression:
Stored size: 1.88 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(es)?/") private def match @match ||= @url.match(%r{twitter\.com/.+?/status(es)?/(?<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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
onebox-1.4.2 | lib/onebox/engine/twitter_status_onebox.rb |
onebox-1.4.1 | lib/onebox/engine/twitter_status_onebox.rb |
onebox-1.4.0 | lib/onebox/engine/twitter_status_onebox.rb |