module Sources::Strategies class Twitter < Base def self.url_match?(url) url =~ %r!https?://(?:mobile\.)?twitter\.com/\w+/status/\d+! || url =~ %r{https?://pbs\.twimg\.com/media/} end def referer_url(template) if template.params[:ref] =~ %r!https?://(?:mobile\.)?twitter\.com/\w+/status/\d+! && template.params[:url] =~ %r{https?://pbs\.twimg\.com/media/} template.params[:ref] else template.params[:url] end end def tags [] end def site_name "Twitter" end def get status_id = status_id_from_url(url) attrs = TwitterService.new.client.status(status_id).attrs @artist_name = attrs[:user][:name] @profile_url = "https://twitter.com/" + attrs[:user][:screen_name] @image_url = attrs[:entities][:media][0][:media_url] + ":orig" @artist_commentary_title = "" @artist_commentary_desc = attrs[:text] end def has_artist_commentary? @artist_commentary_desc.present? end def image_urls TwitterService.new.image_urls(url) end def status_id_from_url(url) if url =~ %r{^https?://(?:mobile\.)?twitter\.com/\w+/status/(\d+)} $1.to_i else raise Sources::Error.new("Couldn't get status ID from URL: #{url}") end end end end