Merged updates from trunk into stable branch
[feedcatcher.git] / app / models / feed_item.rb
index d875a8aa3bac6531e0c9d42dcfee0c2c1e44ff0c..f18374f42fa66027a85e18eafd37c34a8db551dc 100644 (file)
@@ -1,2 +1,26 @@
 class FeedItem < ActiveRecord::Base
+
+  # require 'cgi' # needed for url decoding
+
+  validates_presence_of :feed_name, :title, :description
+  validates_uniqueness_of :title, :scope => :feed_name
+  validate :feed_name_must_be_legal
+
+  def FeedItem.valid_feed_name?(feed_name)
+    Rack::Utils::escape(feed_name) == feed_name and
+      Rack::Utils::unescape(feed_name) == feed_name and
+      feed_name != 'index' and
+      feed_name != 'show' and
+      feed_name != 'update' and
+      feed_name != 'action'
+  end
+
+  private
+
+  def feed_name_must_be_legal
+    unless FeedItem.valid_feed_name?(feed_name)
+      errors.add(:feed_name, 'is an invalid feed name')
+    end
+  end
+
 end