From 9be9c8b2ca91938025d9066ebde5c832da04f0ef Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 8 Nov 2011 09:40:16 +0000 Subject: split deprecated paths_size to its own file This is only needed for users on old MogileFS servers --- lib/mogilefs/mogilefs.rb | 6 +++--- lib/mogilefs/paths_size.rb | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 lib/mogilefs/paths_size.rb diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index 625e26f..e253de5 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -198,9 +198,9 @@ class MogileFS::MogileFS < MogileFS::Client end end - def paths_size(paths) - sock = MogileFS::HTTPReader.first(paths, "HEAD", @get_file_data_timeout) - sock.content_length + def paths_size(paths) # :nodoc: + require "mogilefs/paths_size" + MogileFS::PathsSize.call(paths) end ## diff --git a/lib/mogilefs/paths_size.rb b/lib/mogilefs/paths_size.rb new file mode 100644 index 0000000..ba61f9e --- /dev/null +++ b/lib/mogilefs/paths_size.rb @@ -0,0 +1,24 @@ +# -*- encoding: binary -*- +# This is only a hack for old MogileFS installs that didn't have file_info +require "net/http" +require "uri" +module MogileFS::PathsSize + def self.call(paths) + errors = {} + paths.each do |path| + uri = URI.parse(path) + begin + case r = Net::HTTP.start(uri.host, uri.port) { |x| x.head(uri.path) } + when Net::HTTPOK + return r["Content-Length"].to_i + else + errors[path] = r + end + rescue => err + errors[path] = err + end + end + errors = errors.map { |path,err| "#{path} - #{err.message} (#{err.class})" } + raise MogileFS::Error, "all paths failed with HEAD: #{errors.join(', ')}" + end +end -- cgit v1.2.3-24-ge0c7