twitter_concern.rb 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. module TwitterConcern
  2. extend ActiveSupport::Concern
  3. include Oauthable
  4. included do
  5. validate :validate_twitter_options
  6. valid_oauth_providers :twitter
  7. end
  8. def validate_twitter_options
  9. unless twitter_consumer_key.present? &&
  10. twitter_consumer_secret.present? &&
  11. twitter_oauth_token.present? &&
  12. twitter_oauth_token_secret.present?
  13. errors.add(:base, "Twitter consumer_key, consumer_secret, oauth_token, and oauth_token_secret are required to authenticate with the Twitter API. You can provide these as options to this Agent, or as Credentials with the same names, but starting with 'twitter_'.")
  14. end
  15. end
  16. def twitter_consumer_key
  17. ENV['TWITTER_OAUTH_KEY']
  18. end
  19. def twitter_consumer_secret
  20. ENV['TWITTER_OAUTH_SECRET']
  21. end
  22. def twitter_oauth_token
  23. self.service.token
  24. end
  25. def twitter_oauth_token_secret
  26. self.service.secret
  27. end
  28. def twitter
  29. Twitter::REST::Client.new do |config|
  30. config.consumer_key = twitter_consumer_key
  31. config.consumer_secret = twitter_consumer_secret
  32. config.access_token = twitter_oauth_token
  33. config.access_token_secret = twitter_oauth_token_secret
  34. end
  35. end
  36. end