lib/activity_feed.rb in activity_feed-1.4.0 vs lib/activity_feed.rb in activity_feed-2.0.0.rc1
- old
+ new
@@ -1,113 +1,14 @@
-require 'activity_feed/version'
+require 'activity_feed/configuration'
+require 'activity_feed/item'
require 'activity_feed/feed'
-require 'active_support/core_ext/module/attribute_accessors'
-require 'active_support/inflector'
+require 'activity_feed/utility'
+require 'activity_feed/version'
-require 'redis'
+require 'leaderboard'
module ActivityFeed
- mattr_accessor :redis
- mattr_accessor :namespace
- mattr_accessor :key
- mattr_accessor :persistence
- mattr_accessor :aggregate_key
- mattr_accessor :aggregate
-
- def self.persistence=(type = :memory)
- @@persistence_type = type
-
- case type
- when :active_record
- require 'activity_feed/active_record/item'
- klazz = ActivityFeed::ActiveRecord::Item
- when :memory
- require 'activity_feed/memory/item'
- klazz = ActivityFeed::Memory::Item
- when :mongo_mapper
- require 'activity_feed/mongo_mapper/item'
- klazz = ActivityFeed::MongoMapper::Item
- when :mongoid
- require 'activity_feed/mongoid/item'
- klazz = ActivityFeed::Mongoid::Item
- when :ohm
- require 'activity_feed/ohm/item'
- klazz = ActivityFeed::Ohm::Item
- else
- klazz = "ActivityFeed::#{type.to_s.classify}::Item".constantize
- end
-
- @@persistence = klazz
- end
-
- def self.create_item(attributes, aggregate = ActivityFeed.aggregate)
- item = @@persistence.new(attributes)
- item.save
- if aggregate
- ([item.user_id] | Array(aggregate)).each do |aggregation_id|
- ActivityFeed.aggregate_item(item, aggregation_id)
- end
- end
- item
- end
-
- def self.aggregate_item(item, user_id = nil)
- user_id_for_aggregate = user_id.nil? ? item.user_id : user_id
- case @@persistence_type
- when :active_record, :mongo_mapper, :mongoid
- ActivityFeed.redis.zadd(ActivityFeed.feed_key(user_id_for_aggregate, true), item.created_at.to_i, item.id)
- when :ohm
- ActivityFeed.redis.zadd(ActivityFeed.feed_key(user_id_for_aggregate, true), DateTime.parse(item.created_at).to_i, item.id)
- else
- ActivityFeed.redis.zadd(ActivityFeed.feed_key(user_id_for_aggregate, true), DateTime.now.to_i, item.attributes.to_json)
- end
- end
-
- def self.load_item(item_or_item_id)
- case @@persistence_type
- when :active_record
- ActivityFeed::ActiveRecord::Item.find(item_or_item_id)
- when :memory
- JSON.parse(item_or_item_id)
- when :mongo_mapper
- ActivityFeed::MongoMapper::Item.find(item_or_item_id)
- when :mongoid
- ActivityFeed::Mongoid::Item.find(item_or_item_id)
- when :ohm
- ActivityFeed::Ohm::Item[item_or_item_id]
- else
- @@persistence.find(item_or_item_id)
- end
- end
-
- def self.update_item(user_id, item_id, timestamp, aggregate = false)
- unless @@persistence_type == :memory
- key = feed_key(user_id, aggregate)
- ActivityFeed.redis.zadd(key, timestamp, item_id)
- end
- end
-
- def self.delete_item(user_id, item_id, aggregate = false)
- unless @@persistence_type == :memory
- key = feed_key(user_id, aggregate)
- ActivityFeed.redis.zrem(key, item_id)
- end
- end
-
- def self.feed_key(user_id, aggregate = false)
- if aggregate
- "#{ActivityFeed.namespace}:#{ActivityFeed.key}:#{ActivityFeed.aggregate_key}:#{user_id}"
- else
- "#{ActivityFeed.namespace}:#{ActivityFeed.key}:#{user_id}"
- end
- end
-
- def self.feed(user_id)
- ActivityFeed::Feed.new(user_id)
- end
-
- self.namespace = 'activity'
- self.key = 'feed'
- self.aggregate_key = 'aggregate'
- self.aggregate = []
- self.persistence = :memory
-end
+ extend Configuration
+ extend Item
+ extend Feed
+ extend Utility
+end
\ No newline at end of file