summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Hecker <mail@apoc.cc>2020-04-24 22:56:04 +0200
committerMatthias Hecker <mail@apoc.cc>2020-04-24 22:56:04 +0200
commit40ba5f69f763c47a4cd50439cc8c9937aab80dc4 (patch)
treeb9d048a2c8dde75e273a5215a99f05a3660ee86e
parentc1e2f3a2f2ada21d19b893795bd4d7d58962f8b6 (diff)
refactor: remove global bot instance, closes #42
-rw-r--r--data/rbot/plugins/search.rb8
-rw-r--r--lib/rbot/core/filters_ui.rb2
-rw-r--r--lib/rbot/core/utils/utils.rb59
-rw-r--r--lib/rbot/ircbot.rb7
4 files changed, 18 insertions, 58 deletions
diff --git a/data/rbot/plugins/search.rb b/data/rbot/plugins/search.rb
index b48e937e..b9ebcfa7 100644
--- a/data/rbot/plugins/search.rb
+++ b/data/rbot/plugins/search.rb
@@ -168,7 +168,7 @@ class SearchPlugin < Plugin
# If we return a single, full result, change the output to a more compact representation
if single
- fp = first_pars > 0 ? " -- #{Utils.get_first_pars(links, first_pars)}" : ""
+ fp = first_pars > 0 ? " -- #{Utils.get_first_pars(@bot, links, first_pars)}" : ""
m.reply("Result for %{what}: %{string}%{fp}" % {
:what => what, :string => result_string, :fp => fp
}, :overlong => :truncate)
@@ -179,7 +179,7 @@ class SearchPlugin < Plugin
return unless first_pars > 0
- Utils.get_first_pars urls, first_pars, :message => m
+ Utils.get_first_pars(@bot, urls, first_pars, :message => m)
end
def google(m, params)
@@ -232,7 +232,7 @@ class SearchPlugin < Plugin
if params[:lucky]
m.reply result_string.first
- Utils.get_first_pars([results.map {|url, title| url}.first], first_pars, :message => m)
+ Utils.get_first_pars(@bot, [results.map {|url, title| url}.first], first_pars, :message => m)
return
end
@@ -240,7 +240,7 @@ class SearchPlugin < Plugin
return unless first_pars > 0
- Utils.get_first_pars(results.map {|url, title| url}, first_pars, :message => m)
+ Utils.get_first_pars(@bot, results.map {|url, title| url}, first_pars, :message => m)
end
def google_define(m, what, params)
diff --git a/lib/rbot/core/filters_ui.rb b/lib/rbot/core/filters_ui.rb
index 31e35452..47bd9f5c 100644
--- a/lib/rbot/core/filters_ui.rb
+++ b/lib/rbot/core/filters_ui.rb
@@ -10,7 +10,7 @@ class FiltersModule < CoreBotModule
def initialize
super
@bot.clear_filters
- @bot.register_filter(:htmlinfo) { |s| Utils.get_html_info(s.to_s, s) }
+ @bot.register_filter(:htmlinfo) { |s| Utils.get_html_info(@bot, s.to_s, s) }
end
def help(plugin, topic="")
diff --git a/lib/rbot/core/utils/utils.rb b/lib/rbot/core/utils/utils.rb
index 417622e4..951d0513 100644
--- a/lib/rbot/core/utils/utils.rb
+++ b/lib/rbot/core/utils/utils.rb
@@ -140,22 +140,6 @@ module ::Irc
# Miscellaneous useful functions
module Utils
- @@bot = nil unless defined? @@bot
- @@safe_save_dir = nil unless defined?(@@safe_save_dir)
-
- # The bot instance
- def Utils.bot
- @@bot
- end
-
- # Set up some Utils routines which depend on the associated bot.
- def Utils.bot=(b)
- debug "initializing utils"
- @@bot = b
- @@safe_save_dir = @@bot.path('safe_save')
- end
-
-
# Seconds per minute
SEC_PER_MIN = 60
# Seconds per hour
@@ -320,21 +304,6 @@ module ::Irc
return $?.success?
end
- # Safely (atomically) save to _file_, by passing a tempfile to the block
- # and then moving the tempfile to its final location when done.
- #
- # call-seq: Utils.safe_save(file, &block)
- #
- def Utils.safe_save(file)
- raise 'No safe save directory defined!' if @@safe_save_dir.nil?
- basename = File.basename(file)
- temp = Tempfile.new(basename,@@safe_save_dir)
- temp.binmode
- yield temp if block_given?
- temp.close
- File.rename(temp.path, file)
- end
-
# Decode HTML entities in the String _str_, using HTMLEntities if the
# package was found, or UNESCAPE_TABLE otherwise.
@@ -589,16 +558,16 @@ module ::Irc
# information is retrieved, and special title/summary
# extraction routines are used if possible.
#
- def Utils.get_html_info(doc, opts={})
+ def Utils.get_html_info(bot, doc, opts={})
case doc
when String
Utils.get_string_html_info(doc, opts)
when Net::HTTPResponse
- Utils.get_resp_html_info(doc, opts)
+ Utils.get_resp_html_info(bot, doc, opts)
when URI
ret = DataStream.new
- @@bot.httputil.get_response(doc) { |resp|
- ret.replace Utils.get_resp_html_info(resp, opts)
+ bot.httputil.get_response(doc) { |resp|
+ ret.replace Utils.get_resp_html_info(bot, resp, opts)
}
return ret
else
@@ -615,7 +584,7 @@ module ::Irc
# Currently, the only accepted options (in _opts_) are
# uri_fragment:: the URI fragment of the original request
# full_body:: get the whole body instead of
- # @@bot.config['http.info_bytes'] bytes only
+ # bot.config['http.info_bytes'] bytes only
#
# Returns a DataStream with the following keys:
# text:: the (partial) body
@@ -626,7 +595,7 @@ module ::Irc
# a Hash whose keys are lowercase forms of the HTTP
# header fields, and whose values are Arrays.
#
- def Utils.get_resp_html_info(resp, opts={})
+ def Utils.get_resp_html_info(bot, resp, opts={})
case resp
when Net::HTTPSuccess
loc = URI.parse(resp['x-rbot-location'] || resp['location']) rescue nil
@@ -635,9 +604,9 @@ module ::Irc
end
ret = DataStream.new(opts.dup)
ret[:headers] = resp.to_hash
- ret[:text] = partial = opts[:full_body] ? resp.body : resp.partial_body(@@bot.config['http.info_bytes'])
+ ret[:text] = partial = opts[:full_body] ? resp.body : resp.partial_body(bot.config['http.info_bytes'])
- filtered = Utils.try_htmlinfo_filters(ret)
+ filtered = Utils.try_htmlinfo_filters(bot, ret)
if filtered
return filtered
@@ -658,14 +627,14 @@ module ::Irc
# The input DataStream should have the downloaded HTML as primary key
# (:text) and possibly a :headers key holding the resonse headers.
#
- def Utils.try_htmlinfo_filters(ds)
- filters = @@bot.filter_names(:htmlinfo)
+ def Utils.try_htmlinfo_filters(bot, ds)
+ filters = bot.filter_names(:htmlinfo)
return nil if filters.empty?
cur = nil
# TODO filter priority
filters.each { |n|
debug "testing htmlinfo filter #{n}"
- cur = @@bot.filter(@@bot.global_filter_name(n, :htmlinfo), ds)
+ cur = bot.filter(bot.global_filter_name(n, :htmlinfo), ds)
debug "returned #{cur.pretty_inspect}"
break if cur
}
@@ -720,7 +689,7 @@ module ::Irc
# If (optional) _opts_ :message is specified, those paragraphs are
# echoed as replies to the IRC message passed as _opts_ :message
#
- def Utils.get_first_pars(urls, count, opts={})
+ def Utils.get_first_pars(bot, urls, count, opts={})
idx = 0
msg = opts[:message]
retval = Array.new
@@ -729,7 +698,7 @@ module ::Irc
idx += 1
begin
- info = Utils.get_html_info(URI.parse(url), opts)
+ info = Utils.get_html_info(bot, URI.parse(url), opts)
par = info[:content]
retval.push(par)
@@ -762,5 +731,3 @@ module ::Irc
end
end
-
-Irc::Utils.bot = Irc::Bot::Plugins.manager.bot
diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb
index b039e05d..ecb48449 100644
--- a/lib/rbot/ircbot.rb
+++ b/lib/rbot/ircbot.rb
@@ -373,13 +373,6 @@ class Bot
repopulate_botclass_directory
- save_dir = File.join(@botclass, 'safe_save')
- Dir.mkdir(save_dir) unless File.exist?(save_dir)
- unless FileTest.directory? save_dir
- error "safe save location #{save_dir} is not a directory"
- exit 2
- end
-
# Time at which the last PING was sent
@last_ping = nil
# Time at which the last line was RECV'd from the server