lib/cinch/plugins/twitterstatus.rb in cinch-twitterstatus-1.1.0 vs lib/cinch/plugins/twitterstatus.rb in cinch-twitterstatus-1.1.1

- old
+ new

@@ -1,65 +1,66 @@ # -*- coding: utf-8 -*- require 'cinch' require 'cinch/toolbox' require 'twitter' -module Cinch::Plugins - # Cinch Plugin to post twitter statuses - class TwitterStatus - include Cinch::Plugin +module Cinch + module Plugins + # Cinch Plugin to post twitter statuses + class TwitterStatus + include Cinch::Plugin - self.help = 'Just link to a specific twitter status and I will post the ' + - ' content of that tweet.' + self.help = 'Just link to a specific twitter status and I will ' \ + 'post the content of that tweet.' - listen_to :channel + listen_to :channel - def initialize(*args) - super - @client = twitter_client - end + def initialize(*args) + super + @client = twitter_client + end - def listen(m) - Cinch::Toolbox.extract_urls(m.message).each do |url| - if url.match(%r(^https?://mobile|w{3}?\.?twitter\.com/)) + def listen(m) + Cinch::Toolbox.extract_urls(m.message).each do |url| + next unless url.match(%r(^https?://mobile|w{3}?\.?twitter\.com/)) msg = format_tweet(url) m.reply msg unless msg.nil? end + rescue Twitter::Error::NotFound, Twitter::Error::Forbidden + debug 'User posted an invalid twitter status' end - rescue Twitter::Error::NotFound, Twitter::Error::Forbidden - debug 'User posted an invalid twitter status' - end - def format_tweet(url) - # Parse the url and get the relevant data - user, status = parse_twitter_url(url) + def format_tweet(url) + # Parse the url and get the relevant data + user, status = parse_twitter_url(url) - # Return blank if we didn't get a good user and status - return if user.nil? || status.nil? + # Return blank if we didn't get a good user and status + return if user.nil? || status.nil? - tweet_text(user, status) - end + tweet_text(user, status) + end - def tweet_text(user, status) - # Scrub the tweet for returns so we don't have multilined responses. - status.gsub!(/[\n]+/, ' ') if status.match(/\n/) - "@#{user} tweeted \"#{status}\"" - end + def tweet_text(user, status) + # Scrub the tweet for returns so we don't have multilined responses. + status.gsub!(/[\n]+/, ' ') if status.match(/\n/) + "@#{user} tweeted \"#{status}\"" + end - private + private - def parse_twitter_url(url) - tweet_id = url[%r(statuse?s?/(\d+)/?), 1] - user = url[%r(/?#?!?/([^\/]+)/statuse?s?), 1] - [user, @client.status(tweet_id).text] - end + def parse_twitter_url(url) + tweet_id = url[%r{statuse?s?/(\d+)/?}, 1] + user = url[%r{/?#?!?/([^\/]+)/statuse?s?}, 1] + [user, @client.status(tweet_id).text] + end - def twitter_client - Twitter::REST::Client.new do |c| - c.consumer_key = config[:consumer_key] - c.consumer_secret = config[:consumer_secret] - c.access_token = config[:access_token] - c.access_token_secret = config[:access_secret] + def twitter_client + Twitter::REST::Client.new do |c| + c.consumer_key = config[:consumer_key] + c.consumer_secret = config[:consumer_secret] + c.access_token = config[:access_token] + c.access_token_secret = config[:access_secret] + end end end end end