twitter: don't fail when api key isn't configured.
This commit is contained in:
@@ -22,6 +22,12 @@ module Sources
|
|||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Should return true if all prerequisites for using the strategy are met.
|
||||||
|
# Return false if the strategy requires api keys that have not been configured.
|
||||||
|
def self.enabled?
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
# * <tt>url</tt> - Should point to a resource suitable for
|
# * <tt>url</tt> - Should point to a resource suitable for
|
||||||
# downloading. This may sometimes point to the binary file.
|
# downloading. This may sometimes point to the binary file.
|
||||||
# It may also point to the artist's profile page, in cases
|
# It may also point to the artist's profile page, in cases
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ module Sources::Strategies
|
|||||||
urls.compact.any? { |x| x =~ PAGE || x =~ ASSET}
|
urls.compact.any? { |x| x =~ PAGE || x =~ ASSET}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.enabled?
|
||||||
|
TwitterService.new.enabled?
|
||||||
|
end
|
||||||
|
|
||||||
# https://twitter.com/i/web/status/943446161586733056
|
# https://twitter.com/i/web/status/943446161586733056
|
||||||
# https://twitter.com/motty08111213/status/943446161586733056
|
# https://twitter.com/motty08111213/status/943446161586733056
|
||||||
def self.status_id_from_url(url)
|
def self.status_id_from_url(url)
|
||||||
@@ -135,6 +139,7 @@ module Sources::Strategies
|
|||||||
memoize :service
|
memoize :service
|
||||||
|
|
||||||
def api_response
|
def api_response
|
||||||
|
return {} if !service.enabled?
|
||||||
service.status(status_id, tweet_mode: "extended")
|
service.status(status_id, tweet_mode: "extended")
|
||||||
rescue ::Twitter::Error::NotFound
|
rescue ::Twitter::Error::NotFound
|
||||||
{}
|
{}
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
class TwitterService
|
class TwitterService
|
||||||
|
class Error < Exception ; end
|
||||||
extend Memoist
|
extend Memoist
|
||||||
|
|
||||||
|
def enabled?
|
||||||
|
Danbooru.config.twitter_api_key.present? && Danbooru.config.twitter_api_secret.present?
|
||||||
|
end
|
||||||
|
|
||||||
def client
|
def client
|
||||||
raise "Twitter API keys not set" if Danbooru.config.twitter_api_key.nil?
|
raise Error, "Twitter API keys not set" if !enabled?
|
||||||
|
|
||||||
rest_client = ::Twitter::REST::Client.new do |config|
|
rest_client = ::Twitter::REST::Client.new do |config|
|
||||||
config.consumer_key = Danbooru.config.twitter_api_key
|
config.consumer_key = Danbooru.config.twitter_api_key
|
||||||
|
|||||||
@@ -2,15 +2,17 @@ require 'test_helper'
|
|||||||
|
|
||||||
module Sources
|
module Sources
|
||||||
class TwitterTest < ActiveSupport::TestCase
|
class TwitterTest < ActiveSupport::TestCase
|
||||||
|
setup do
|
||||||
|
skip "Twitter credentials are not configured" if !Sources::Strategies::Twitter.enabled?
|
||||||
|
end
|
||||||
|
|
||||||
context "An extended tweet" do
|
context "An extended tweet" do
|
||||||
should "extract the correct image url" do
|
should "extract the correct image url" do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/onsen_musume_jp/status/865534101918330881")
|
@site = Sources::Strategies.find("https://twitter.com/onsen_musume_jp/status/865534101918330881")
|
||||||
assert_equal(["https://pbs.twimg.com/media/DAL-ntWV0AEbhes.jpg:orig"], @site.image_urls)
|
assert_equal(["https://pbs.twimg.com/media/DAL-ntWV0AEbhes.jpg:orig"], @site.image_urls)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "extract all the image urls" do
|
should "extract all the image urls" do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/aoimanabu/status/892370963630743552")
|
@site = Sources::Strategies.find("https://twitter.com/aoimanabu/status/892370963630743552")
|
||||||
|
|
||||||
urls = %w[
|
urls = %w[
|
||||||
@@ -25,7 +27,6 @@ module Sources
|
|||||||
|
|
||||||
context "A video" do
|
context "A video" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/CincinnatiZoo/status/859073537713328129")
|
@site = Sources::Strategies.find("https://twitter.com/CincinnatiZoo/status/859073537713328129")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -36,7 +37,6 @@ module Sources
|
|||||||
|
|
||||||
context "An animated gif" do
|
context "An animated gif" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/DaniStrawberry1/status/859435334765088769")
|
@site = Sources::Strategies.find("https://twitter.com/DaniStrawberry1/status/859435334765088769")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -47,7 +47,6 @@ module Sources
|
|||||||
|
|
||||||
context "A twitter summary card" do
|
context "A twitter summary card" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/NatGeo/status/932700115936178177")
|
@site = Sources::Strategies.find("https://twitter.com/NatGeo/status/932700115936178177")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -58,7 +57,6 @@ module Sources
|
|||||||
|
|
||||||
context "A twitter summary card from twitter" do
|
context "A twitter summary card from twitter" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/masayasuf/status/870734961778630656/photo/1")
|
@site = Sources::Strategies.find("https://twitter.com/masayasuf/status/870734961778630656/photo/1")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -70,7 +68,6 @@ module Sources
|
|||||||
|
|
||||||
context "A twitter summary card from twitter with a :large image" do
|
context "A twitter summary card from twitter with a :large image" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/aranobu/status/817736083567820800")
|
@site = Sources::Strategies.find("https://twitter.com/aranobu/status/817736083567820800")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -89,7 +86,6 @@ module Sources
|
|||||||
|
|
||||||
context "The source site for a restricted twitter" do
|
context "The source site for a restricted twitter" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://mobile.twitter.com/Strangestone/status/556440271961858051")
|
@site = Sources::Strategies.find("https://mobile.twitter.com/Strangestone/status/556440271961858051")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -100,7 +96,6 @@ module Sources
|
|||||||
|
|
||||||
context "The source site for twitter" do
|
context "The source site for twitter" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://mobile.twitter.com/nounproject/status/540944400767922176")
|
@site = Sources::Strategies.find("https://mobile.twitter.com/nounproject/status/540944400767922176")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -133,7 +128,6 @@ module Sources
|
|||||||
|
|
||||||
context "The source site for a direct image and a referer" do
|
context "The source site for a direct image and a referer" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://pbs.twimg.com/media/B4HSEP5CUAA4xyu.png:large", "https://twitter.com/nounproject/status/540944400767922176")
|
@site = Sources::Strategies.find("https://pbs.twimg.com/media/B4HSEP5CUAA4xyu.png:large", "https://twitter.com/nounproject/status/540944400767922176")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -148,7 +142,6 @@ module Sources
|
|||||||
|
|
||||||
context "The source site for a direct image url (pbs.twimg.com/media/*.jpg) without a referer url" do
|
context "The source site for a direct image url (pbs.twimg.com/media/*.jpg) without a referer url" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://pbs.twimg.com/media/B4HSEP5CUAA4xyu.png:large")
|
@site = Sources::Strategies.find("https://pbs.twimg.com/media/B4HSEP5CUAA4xyu.png:large")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -167,7 +160,6 @@ module Sources
|
|||||||
|
|
||||||
context "The source site for a https://twitter.com/i/web/status/:id url" do
|
context "The source site for a https://twitter.com/i/web/status/:id url" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/i/web/status/943446161586733056")
|
@site = Sources::Strategies.find("https://twitter.com/i/web/status/943446161586733056")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -189,7 +181,6 @@ module Sources
|
|||||||
|
|
||||||
context "A tweet" do
|
context "A tweet" do
|
||||||
setup do
|
setup do
|
||||||
skip "Twitter key is not set" unless Danbooru.config.twitter_api_key
|
|
||||||
@site = Sources::Strategies.find("https://twitter.com/noizave/status/875768175136317440")
|
@site = Sources::Strategies.find("https://twitter.com/noizave/status/875768175136317440")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user