Hi, I have been having a bit of an issue. I am trying to create a
program that will allow me to run a file containing a directory listing
line by line through a proxy. I am designing this to help with my job, I
am a web application pen tester. The only issue with the code is I am
running into 404 and 502 errors which is to be expected. I would like to
find a way to handle the exception without bringing the execution to a
halt or deleting anything from the original directory listing. Here is
my code
begin
list = IO.foreach(url_file) {|line| agent.get(line)}
rescue WWW::Mechanize::ResponseCodeError
puts "Page not found"
end
Please if anyone has an idea on how to make this work I would very much
appreciate the help.
···
--
Posted via http://www.ruby-forum.com/.
Your problem is that you're catching the exception outside of the loop. Try
something like:
list = IO.foreach(url_file) do |line|
begin
agent.get(line)
rescue WWW::Mechanize::ResponseCodeError
puts "Page not found"
end
end
···
On Wed, Oct 28, 2009 at 7:23 PM, Kyle Johnson <kylearippee@gmail.com> wrote:
Hi, I have been having a bit of an issue. I am trying to create a
program that will allow me to run a file containing a directory listing
line by line through a proxy. I am designing this to help with my job, I
am a web application pen tester. The only issue with the code is I am
running into 404 and 502 errors which is to be expected. I would like to
find a way to handle the exception without bringing the execution to a
halt or deleting anything from the original directory listing. Here is
my code
begin
list = IO.foreach(url_file) {|line| agent.get(line)}
rescue WWW::Mechanize::ResponseCodeError
puts "Page not found"
end
Please if anyone has an idea on how to make this work I would very much
appreciate the help.
--
Posted via http://www.ruby-forum.com/\.
Judson Lester wrote:
Your problem is that you're catching the exception outside of the loop.
Should that matter? The extension is still happening after the begin,
so the rescue should catch it.
Try
something like:
list = IO.foreach(url_file) do |line|
begin
agent.get(line)
rescue WWW::Mechanize::ResponseCodeError
puts "Page not found"
end
end
(The inner begin and end are not actually needed here, I think.)
Best,
···
--
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
--
Posted via http://www.ruby-forum.com/\.
Marnen Laibow-Koser wrote:
Judson Lester wrote:
Your problem is that you're catching the exception outside of the loop.
Should that matter? The extension is still happening after the begin,
so the rescue should catch it.
Sorry, I meant "exception", not "extension", obviously! 
[...]
···
Best,
--
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
--
Posted via http://www.ruby-forum.com/\.
From the OPs description of the problem, and the code presented, yes, the
rescue will catch the exception, but that will stop the loop.
So, if you're trying to get /missing.html, /broken.html,
/the_url_I_want.svg, and missing raises a 404, then that will get caught by
the rescue outside of the loop, and you won't make further requests. In
other words:
input:
output:
Page Not Found
When what I understood Kyle to want from the output is something like
Page Not Found
"It's spelled 'awesome'"
Judson
···
On Thu, Oct 29, 2009 at 3:33 PM, Marnen Laibow-Koser <marnen@marnen.org>wrote:
Marnen Laibow-Koser wrote:
> Judson Lester wrote:
>> Your problem is that you're catching the exception outside of the loop.
>
> Should that matter? The extension is still happening after the begin,
> so the rescue should catch it.
Sorry, I meant "exception", not "extension", obviously! 
[...]
>
> Best,
> --
> Marnen Laibow-Koser
> http://www.marnen.org
> marnen@marnen.org
--
Posted via http://www.ruby-forum.com/\.
Judson Lester wrote:
From the OPs description of the problem, and the code presented, yes,
the
rescue will catch the exception, but that will stop the loop.
So, if you're trying to get /missing.html, /broken.html,
/the_url_I_want.svg, and missing raises a 404, then that will get caught
by
the rescue outside of the loop, and you won't make further requests. In
other words:
input:
Login | HSTS Redirection Community
Login | HSTS Redirection Community
output:
Page Not Found
When what I understood Kyle to want from the output is something like
Page Not Found
"It's spelled 'awesome'"
I think you're right about what the OP wants. I had initially thought
that both syntaxes would stop the loop, but on second reading, I think I
was wrong about that. Gotcha.
Judson
Best,
···
--
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
--
Posted via http://www.ruby-forum.com/\.
Thank you so much guys. IT WORKS!!!! We have seriously been beating our
heads over our desks about this. I really appreciate it guys. Do you
guys have twitter at all? I would like to give you some credit for this.
···
--
Posted via http://www.ruby-forum.com/.
Kyle Rippee wrote:
Thank you so much guys. IT WORKS!!!! We have seriously been beating our
heads over our desks about this. I really appreciate it guys. Do you
guys have twitter at all? I would like to give you some credit for this.
Yeah, I'm @marnen (big surprise...
).
Best,
···
--
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
--
Posted via http://www.ruby-forum.com/\.