X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Furl.rb;h=2cee5f4f5d37b2d1443b16355fe9ae60c086fc20;hb=6fb82f2c8ae244cb098f2eae78a7d3143f3e2069;hp=ef5374ab6a81f11f203437a835c098221c465dfc;hpb=4a02f91e3e8aa783799b1b82a591206fad9840b6;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/url.rb b/data/rbot/plugins/url.rb index ef5374ab..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,9 +140,13 @@ class UrlPlugin < Plugin debug "Title #{title ? '' : 'not '} found" reply = "#{LINK_INFO} #{title}" if title rescue => e - if e.message =~ /\(404 - Not Found\)/i - # see if we failed to find the thing because of trailing punctuation - # but check that we still have 'something' in the URL + 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}" @@ -150,7 +154,7 @@ class UrlPlugin < Plugin if display_info > urls_displayed if reply - m.reply(reply, :overlong => :truncate) + m.plainreply(reply, :overlong => :truncate) urls_displayed += 1 end end @@ -176,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)