about summary refs log tree commit homepage
path: root/lib/mogilefs/put.rb
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-12-08 16:57:08 -0800
committerEric Wong <normalperson@yhbt.net>2011-12-08 16:57:08 -0800
commitf62e34251c1101b0fcdddea35dfa3f73c416a3ba (patch)
treed0b151e94add4b5955c590009d07deb54a9b142e /lib/mogilefs/put.rb
parent50f9287610725257bf64781a2008398ff6ceeacb (diff)
downloadmogilefs-client-f62e34251c1101b0fcdddea35dfa3f73c416a3ba.tar.gz
Putting this into the MogileFS::Put::* namespace will
make it easier to document.
Diffstat (limited to 'lib/mogilefs/put.rb')
-rw-r--r--lib/mogilefs/put.rb29
1 files changed, 29 insertions, 0 deletions
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