X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=app%2Fcontrollers%2Ffeed_controller.rb;h=f7b8c3e9c7a8b65ba40e39e1aeff9fbc7cddf52c;hb=449f88a595af707cec02270dd752773a18dacfc2;hp=2d6fee9786f62166fb4414cef8fa241c67c7f96c;hpb=acd80c1fc3212b41c0b05a8f5ac2ad7edc990751;p=feedcatcher.git diff --git a/app/controllers/feed_controller.rb b/app/controllers/feed_controller.rb index 2d6fee9..f7b8c3e 100644 --- a/app/controllers/feed_controller.rb +++ b/app/controllers/feed_controller.rb @@ -1,24 +1,21 @@ class FeedController < ApplicationController - - skip_before_filter :verify_authenticity_token - + def index - @feeds = FeedItem.find(:all, :select => 'DISTINCT feed_name') + @feeds = FeedItem.select(:feed_name).distinct respond_to do |format| format.html format.rss { render :layout => false } end end - def show - if valid_feed_name?(params[:feed_name]) - @feed_items = FeedItem.find_all_by_feed_name(params[:feed_name]) + if FeedItem::valid_feed_name?(params[:feed_name]) @feed_name = params[:feed_name] + @feed_items = FeedItem.in_feed(@feed_name) respond_to do |format| - if @feed_items == [] - flash[:notice] = "No items in feed #{params[:feed_name]}" - format.html { redirect_to index_url } + if @feed_items.empty? + flash[:notice] = "No items in feed #{@feed_name}" + format.html { redirect_to index_path } format.rss { render :layout => false } else format.html @@ -28,18 +25,17 @@ class FeedController < ApplicationController else respond_to do |format| flash[:notice] = "Invalid feed name" - format.html { redirect_to index_url } + format.html { redirect_to index_path } format.rss { head :not_found} end end end - def update - if valid_feed_name?(params[:new_feed_name]) - item = FeedItem.find_by_feed_name_and_title(params[:new_feed_name], params[:title]) + if FeedItem::valid_feed_name?(params[:feed_name]) + item = FeedItem.in_feed(params[:feed_name]).entitled(params[:title]).take if item - if params[:description] == '' + if params[:description].empty? destroy_item(item) else update_item(item) @@ -50,72 +46,60 @@ class FeedController < ApplicationController else respond_to do |format| flash[:notice] = "Invalid feed name" - format.html { redirect_to index_url } + format.html { redirect_to index_path } format.rss { head :not_found } end end end - private + # private - def 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 - - - def create_item - item = FeedItem.new(:feed_name => params[:new_feed_name], + private def create_item + item = FeedItem.new(:feed_name => params[:feed_name], :title => params[:title], :description => params[:description]) item.save! flash[:notice] = "Element #{params[:title]} created" respond_to do |format| - format.html { redirect_to feed_url(params[:new_feed_name]) } + format.html { redirect_to feed_path(params[:feed_name]) } format.rss { head :ok } end rescue ActiveRecord::RecordInvalid => error flash[:notice] = "Element #{params[:title]} could not be created" respond_to do |format| - format.html { redirect_to feed_url(params[:new_feed_name]) } + format.html { redirect_to feed_path(params[:feed_name]) } format.rss { head :unprocessable_entity } end end - - def update_item(item) + private def update_item(item) if item.update_attribute(:description, params[:description]) flash[:notice] = "Element #{params[:title]} updated" respond_to do |format| - format.html { redirect_to feed_url(params[:new_feed_name]) } + format.html { redirect_to feed_path(params[:feed_name]) } format.rss { head :ok } end else flash[:notice] = "Element #{params[:title]} could not be updated" respond_to do |format| - format.html { redirect_to feed_url(params[:new_feed_name]) } + format.html { redirect_to feed_path(params[:feed_name]) } format.rss { head :unprocessable_entity } end end end - - def destroy_item(item) + private def destroy_item(item) if item.destroy - flash[:notice] = "Element #{params[:title]} destroyed" + flash[:notice] = "Element #{params[:title]} deleted" respond_to do |format| - format.html { redirect_to feed_url(params[:new_feed_name]) } + format.html { redirect_to feed_path(params[:feed_name]) } format.rss { head :ok } end else - flash[:notice] = "Element #{params[:title]} could not be destroyed" + flash[:notice] = "Element #{params[:title]} could not be deleted" respond_to do |format| - format.html { redirect_to feed_url(params[:new_feed_name]) } + format.html { redirect_to feed_path(params[:feed_name]) } format.rss { head :unprocessable_entity } end end