X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Furl.rb;h=2cee5f4f5d37b2d1443b16355fe9ae60c086fc20;hb=6fb82f2c8ae244cb098f2eae78a7d3143f3e2069;hp=f44da3eb879f1f72ad550e25e1a89c98c4520614;hpb=fb0e836fdc1d6959ffabd7c1ab906bc25f329b2e;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/url.rb b/data/rbot/plugins/url.rb index f44da3eb..2cee5f4f 100644 --- a/data/rbot/plugins/url.rb +++ b/data/rbot/plugins/url.rb @@ -79,7 +79,7 @@ class UrlPlugin < Plugin begin debug "+ getting info for #{url.request_uri}" - info = Utils.get_html_info(url) + info = @bot.filter(:htmlinfo, url) debug info resp = info[:headers] @@ -140,12 +140,21 @@ class UrlPlugin < Plugin debug "Title #{title ? '' : 'not '} found" reply = "#{LINK_INFO} #{title}" if title rescue => e + debug e + # we might get a 404 because of trailing punctuation, so we try again + # with the last character stripped. this might generate invalid URIs + # (e.g. because "some.url" gets chopped to some.url%2, so catch that too + if e.message =~ /\(404 - Not Found\)/i or e.kind_of?(URI::InvalidURIError) + # chop off last character, and retry if we still have enough string to + # look like a minimal URL + retry if urlstr.chop! and urlstr =~ /^https?:\/\/./ + end reply = "Error #{e.message}" end if display_info > urls_displayed if reply - m.reply(reply, :overlong => :truncate) + m.plainreply(reply, :overlong => :truncate) urls_displayed += 1 end end @@ -171,8 +180,7 @@ class UrlPlugin < Plugin Thread.new { handle_urls(m, urls, params[:urls].length) } end - def listen(m) - return unless m.kind_of?(PrivMessage) + def message(m) return if m.address? escaped = URI.escape(m.message, OUR_UNSAFE)