Files
danbooru/app/logical/sources/strategies/twitter.rb
Toks 04d6640792 Fix upload page fetching source for wrong page from twitter
It would always fetch from the referer, regardless of what page that
was. It didn't even have to be a page on twitter.
2015-06-03 20:12:12 -04:00

50 lines
1.3 KiB
Ruby

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