Graceful way to handle execution expired and bad URI errors?

Hello,        I have a program that takes blog urls that our customers enter into their profiles. In some cases they enter bad feeds (IE html pages instead of atom or rss), and it throws these two errors:

execution expired and bad URI errors in the view.

I need to find a graceful way to handle both. Preferably, if I could find a way to throw an error message for the execution expired after a certain time period would be great.

Here's the method code:

[code   def feed_widget_details     @page_object = getPageObject     if @page_object.has_chatter_source?(0)       @blog_url = "#{WEB_SERVER}/controller/rss/blog/#{@page_object.id_unique}"     elsif @page_object.has_chatter_source?(1)       @blog_url = 'http://reverb.feedxi.com/Warm.xml?url=’ + @page_object.blog_feed     else       @blog_url = @page_object.blog_feed     end   end [/code]

and here' s the view code:

[code cache({:controller => "rss", :action => "feed_widget_details", :id => @page_object.id}, {:expires => 15.minutes}) do

  begin     blog_contents = Net::HTTP.get(URI.parse( @blog_url + '&=' + params[:k] ))   rescue     blog_contents = '<title type="text">No blog entries</title>'     blog_contents   end

-%> <%=blog_contents-%>

<% end -%> [/code]

I just added the begin rescue block in the view but this seems like it could be an act of desperation more than a good fix.

Help!

Hello,       I have a program that takes blog urls that our customers enter into their profiles. In some cases they enter bad feeds (IE html pages instead of atom or rss), and it throws these two errors:

execution expired and bad URI errors in the view.

I need to find a graceful way to handle both. Preferably, if I
could find a way to throw an error message for the execution expired after a certain time period would be great.

I've done stuff like this

http = Net::HTTP.new(uri.host, uri.port) http.open_timeout = 2 http.read_timeout = 7 http.start do |http|    http.request_get(some_url) end Which will raise Timeout::Error if it takes longer than the indicated
time. You probably also want to rescue things like Net::ProtocolError,
IOError, Errno::ECONNREFUSED as well. Obviously rescue Exception would
take care of all of that, but I don't like casting the net too wide
like that - you could swallow up mistakes that are actually your own
mistakes rather than a bad url or a network problem.

I wouldn't have that in the view at all, I'd have a FeedFetcher model
that did that for me.

Fred

Cool - this definitely looks more like what I was trying to do.

You put the code in the model? I thought it would have best ben put in a helper?

Thanks for your help!

Frederick Cheung wrote:

Cool - this definitely looks more like what I was trying to do.

You put the code in the model? I thought it would have best ben put in a helper?

My particular case was a little different but I wouldn't put things
like that in a view. It's not presentation logic or prettification or
anything like that. Fred

For my case, where do you think the best place for this would be?

Thanks again

For my case, where do you think the best place for this would be?

I think i said earlier than I'd have a feed fetcher model to handle
this.

Fred

sorry - my tired eyed didn't catch.

Thanks again for the help - big help it was.

-E

For my case, where do you think the best place for this would be?