diff options
Diffstat (limited to 'lib/mogilefs')
-rw-r--r-- | lib/mogilefs/mogilefs.rb | 13 | ||||
-rw-r--r-- | lib/mogilefs/put.rb | 29 | ||||
-rw-r--r-- | lib/mogilefs/put/content_range.rb (renamed from lib/mogilefs/http_range_put.rb) | 2 | ||||
-rw-r--r-- | lib/mogilefs/put/stream.rb (renamed from lib/mogilefs/http_stream.rb) | 2 | ||||
-rw-r--r-- | lib/mogilefs/put/tempfile.rb (renamed from lib/mogilefs/http_tempfile.rb) | 2 |
5 files changed, 33 insertions, 15 deletions
diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index 50484d8..c93d1a3 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -161,18 +161,7 @@ class MogileFS::MogileFS < MogileFS::Client case (dests[0][1] rescue nil) when %r{\Ahttp://} - http_file = case opts[:largefile] - when :chunked,:stream - MogileFS::HTTPStream - when :tempfile - require 'mogilefs/http_tempfile' - MogileFS::HTTPTempfile - when :content_range - require 'mogilefs/http_range_put' - MogileFS::HTTPRangePut - when nil, false - MogileFS::HTTPFile - end.new(dests, opts) + http_file = MogileFS::Put[opts[:largefile]].new(dests, opts) if block_given? yield http_file return http_file.commit # calls create_close diff --git a/lib/mogilefs/put.rb b/lib/mogilefs/put.rb new file mode 100644 index 0000000..3f13df2 --- /dev/null +++ b/lib/mogilefs/put.rb @@ -0,0 +1,29 @@ +# -*- encoding: binary -*- +module MogileFS::Put + + def self.[](largefile) + case largefile + when nil, false + MogileFS::HTTPFile + when :stream + Stream + when :content_range + ContentRange + when :tempfile + Tempfile + else + raise ArgumentError, "largefile: #{largefile.inspect} not understood" + end + end + + def self.const_missing(name) + case name + when :Stream, :ContentRange, :Tempfile + file = name.to_s.gsub(/([a-z])([A-Z])/, '\1_\2').downcase + require "mogilefs/put/#{file}" + const_get(name) + else + super(name) + end + end +end diff --git a/lib/mogilefs/http_range_put.rb b/lib/mogilefs/put/content_range.rb index e191c23..e44a8e2 100644 --- a/lib/mogilefs/http_range_put.rb +++ b/lib/mogilefs/put/content_range.rb @@ -11,7 +11,7 @@ require 'mogilefs/new_file_common' require 'mogilefs/new_file_writer' # an IO-like object -class MogileFS::HTTPRangePut +class MogileFS::Put::ContentRange include MogileFS::NewFileWriter include MogileFS::NewFileCommon diff --git a/lib/mogilefs/http_stream.rb b/lib/mogilefs/put/stream.rb index 3f84b9b..590a24f 100644 --- a/lib/mogilefs/http_stream.rb +++ b/lib/mogilefs/put/stream.rb @@ -4,7 +4,7 @@ require 'mogilefs/new_file_common' require 'mogilefs/new_file_writer' -class MogileFS::HTTPStream +class MogileFS::Put::Stream attr_reader :to_io attr_reader :md5 diff --git a/lib/mogilefs/http_tempfile.rb b/lib/mogilefs/put/tempfile.rb index 5019522..8082f95 100644 --- a/lib/mogilefs/http_tempfile.rb +++ b/lib/mogilefs/put/tempfile.rb @@ -3,7 +3,7 @@ require 'tempfile' require 'mogilefs/http_file' -class MogileFS::HTTPTempfile < Tempfile +class MogileFS::Put::Tempfile < Tempfile def initialize(*args) @mogilefs_httpfile_args = args super("mogilefs-client") |