about summary refs log tree commit homepage
path: root/lib/mogilefs/put.rb
diff options
context:
space:
mode:
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