Class: Lita::Handlers::Tweet
- Inherits:
-
Handler
- Object
- Handler
- Lita::Handlers::Tweet
- Defined in:
- lib/lita/handlers/tweet.rb,
lib/lita/handlers/tweet/data.rb,
lib/lita/handlers/tweet/account.rb
Defined Under Namespace
Classes: Data
Constant Summary collapse
- TWITTER_AUTH_URL =
"/twitter/auth"
- TWITTER_AUTH_CALLBACK_URL =
"/twitter/callback"
- Account =
KeywordStruct.new(:username, :token, :secret, :config, :last_tweet) do def tweet(text) client.update(text) end def untweet last_tweet ? client.destroy_status(last_tweet) : false end def lookup_username! client.user.screen_name.tap do |username| self.username = username end end private def client return nil unless config && token && secret @client ||= ::Twitter::REST::Client.new do |c| c.consumer_key = config.consumer_key c.consumer_secret = config.consumer_secret c.access_token = token c.access_token_secret = secret end end end
Instance Method Summary collapse
- #accounts(response) ⇒ Object
- #default(response) ⇒ Object
- #map(response) ⇒ Object
- #tweet(response) ⇒ Object
- #twitter_auth(request, response) ⇒ Object
- #twitter_auth_callback(request, response) ⇒ Object
- #twitter_data ⇒ Object
- #unmap(response) ⇒ Object
- #untweet(response) ⇒ Object
Instance Method Details
#accounts(response) ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/lita/handlers/tweet.rb', line 61 def accounts(response) case response.args[1] when "add" response.reply(add_account) when "remove" response.reply(remove_account(response.args[2])) else response.reply(list_accounts) end end |
#default(response) ⇒ Object
83 84 85 86 87 |
# File 'lib/lita/handlers/tweet.rb', line 83 def default(response) account = response.args[1] account.gsub!(/^@/, '') if account response.reply(set_default_map(account)) end |
#map(response) ⇒ Object
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/lita/handlers/tweet.rb', line 72 def map(response) name, account = response.args[1..2] account.gsub!(/^@/, '') if account if name response.reply(set_map(name, account)) else response.reply(list_map) end end |
#tweet(response) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/lita/handlers/tweet.rb', line 34 def tweet(response) text = response.match_data[1] if text.nil? || text.empty? return response.reply("I need something to tweet!") end account = account_for(response..source) return response.reply() if account.nil? tweet = account.tweet(text) twitter_data.set_last_tweet(account.username, tweet.id) # We assume that you have e.g. a Slack integration that shows all tweets # so instead of response.reply(tweet.url.to_s), we merely say: response.reply("Tweet posted!") end |
#twitter_auth(request, response) ⇒ Object
94 95 96 97 98 99 |
# File 'lib/lita/handlers/tweet.rb', line 94 def twitter_auth(request, response) callback_url = TWITTER_AUTH_CALLBACK_URL request_token = twitter_data.create_request_token(callback_url) response.status = 302 response.headers["Location"] = request_token. end |
#twitter_auth_callback(request, response) ⇒ Object
101 102 103 104 105 106 |
# File 'lib/lita/handlers/tweet.rb', line 101 def twitter_auth_callback(request, response) token = request.params["oauth_token"] verifier = request.params["oauth_verifier"] account = twitter_data.(token, verifier) response.body << "Done! You can now tweet from @#{account.username}." end |
#twitter_data ⇒ Object
108 109 110 |
# File 'lib/lita/handlers/tweet.rb', line 108 def twitter_data @twitter_data ||= Data.new(redis, config, robot) end |
#unmap(response) ⇒ Object
89 90 91 92 |
# File 'lib/lita/handlers/tweet.rb', line 89 def unmap(response) name = response.args[1] response.reply(clear_map(name)) end |
#untweet(response) ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/lita/handlers/tweet.rb', line 50 def untweet(response) account = account_for(response..source) return response.reply() if account.nil? if account.untweet response.reply("Removed last tweet.") else response.reply("Couldn't find a last tweet to remove!") end end |