Sha256: 5cf2ae312cf0b2a0d93d26cd5275fd9cf871d57dbacc1e67456292e7902ed986

Contents?: true

Size: 1.72 KB

Versions: 3

Compression:

Stored size: 1.72 KB

Contents

module Weeter
  module Plugins
    module Notification
      class Resque
        include Weeter::Plugins::Net::Redis

        def initialize(client_app_config)
          @config = client_app_config
        end

        def publish_tweet(tweet_item)
          resque_job = %Q|{"class":"WeeterPublishTweetJob","args":[#{tweet_item.to_json}]}|
          Weeter.logger.info("Publishing tweet #{tweet_item['id']} from user #{tweet_item['user']['id_str']}: #{tweet_item['text']}")
          enqueue(resque_job)
        end

        def delete_tweet(tweet_item)
          resque_job = %Q|{"class":"WeeterDeleteTweetJob","args":[#{tweet_item.to_json}]}|
          Weeter.logger.info("Deleting tweet #{tweet_item['id']} for user #{tweet_item['user']['id_str']}")
          enqueue(resque_job)
        end

        def notify_missed_tweets(tweet_item)
          resque_job = %Q|{"class":"WeeterMissedTweetsJob","args":[#{tweet_item.to_json}]}|
          Weeter.logger.info("Notifying of missed tweets (#{tweet_item.missed_tweets_count}).")
          enqueue(resque_job)
        end

        def notify_rate_limiting_initiated(tweet_item, limited_keys)
          payload = tweet_item.to_hash.merge(:limited_keys => limited_keys)
          payload_json = MultiJson.encode(payload)
          resque_job = %Q|{"class":"WeeterRateLimitingInitiatedJob","args":[#{payload_json}]}|
          Weeter.logger.info("Initiated rate limiting with tweet: #{payload_json}")
          enqueue(resque_job)
        end

      protected

        def redis
          @redis ||= create_redis_client
        end

        def enqueue(job)
          redis.rpush(queue_key, job)
        end

        def queue_key
          "resque:queue:#{@config.queue}"
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
weeter-0.15.0 lib/weeter/plugins/notification/resque.rb
weeter-0.14.0 lib/weeter/plugins/notification/resque.rb
weeter-0.13.0 lib/weeter/plugins/notification/resque.rb