module RedditBot::Twitter
Public Class Methods
init_twitter(twitter)
click to toggle source
# File lib/reddit_bot.rb, line 277 def self.init_twitter twitter const_set :TWITTER_ACCOUNT, twitter const_set :TWITTER_ACCESS_TOKEN, JSON.load( NetHTTPUtils.request_data "https://api.twitter.com/oauth2/token", :post, auth: File.read("twitter.token").split, form: {grant_type: :client_credentials} )["access_token"] end
tweet2titleNtext(tweet)
click to toggle source
# File lib/reddit_bot.rb, line 287 def self.tweet2titleNtext tweet pp tweet if ENV["TEST"] text = "" contains_media = false up = ->s{ s.split.map{ |w| "^#{w}" }.join " " } if tweet["extended_entities"] && !tweet["extended_entities"]["media"].empty? contains_media = true tweet["extended_entities"]["media"].each_with_index do |media, i| text.concat "* [Image #{i + 1}](#{media["media_url_https"]})\n\n" end end if !tweet["entities"]["urls"].empty? contains_media = true tweet["entities"]["urls"].each_with_index do |url, i| text.concat "* [Link #{i + 1}](#{url["expanded_url"]})\n\n" end end text.concat "^- #{ up[tweet["user"]["name"]] } [^\\(@#{TWITTER_ACCOUNT}\\)](https://twitter.com/#{TWITTER_ACCOUNT}) ^| [#{ up[Date.parse(tweet["created_at"]).strftime "%B %-d, %Y"] }](https://twitter.com/#{TWITTER_ACCOUNT}/status/#{tweet["id"]})" [CGI::unescapeHTML(tweet["full_text"]).sub(/( https:\/\/t\.co\/[0-9a-zA-Z]{10})*\z/, ""), text, contains_media] end
user_timeline()
click to toggle source
# File lib/reddit_bot.rb, line 312 def self.user_timeline timeout = 1 JSON.load begin NetHTTPUtils.request_data( "https://api.twitter.com/1.1/statuses/user_timeline.json", form: { screen_name: TWITTER_ACCOUNT, count: 200, tweet_mode: "extended" }, header: { Authorization: "Bearer #{TWITTER_ACCESS_TOKEN}" } ) rescue NetHTTPUtils::Error => e fail unless [500, 503].include? e.code sleep timeout timeout *= 2 retry end end