lib/onebox/engine/twitter_status_onebox.rb in onebox-1.4.5 vs lib/onebox/engine/twitter_status_onebox.rb in onebox-1.4.7

- old
+ new

@@ -1,97 +1,24 @@ module Onebox module Engine class TwitterStatusOnebox include Engine - include LayoutSupport - include HTML + include JSON 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+)}) + def url + "https://api.twitter.com/1/statuses/oembed.json?id=#{match[:id]}" end - def client - Onebox.options.twitter_client + def to_html + raw['html'] end - def raw - if client - @raw ||= OpenStruct.new(client.status(match[:id]).to_hash) - else - super - end - end + private - 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")[0].inner_text - else - created_at = access(:created_at) - date = DateTime.strptime(created_at, "%a %b %d %H:%M:%S %z %Y") - user_offset = access(:user, :utc_offset).to_i - offset = (user_offset >= 0 ? "+" : "-") + Time.at(user_offset.abs).gmtime.strftime("%H%M") - date.new_offset(offset).strftime("%l:%M %p - %e %b %Y") - 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 } + def match + @match ||= @url.match(%r{twitter\.com/.+?/status(es)?/(?<id>\d+)}) end end end end