diff options
Diffstat (limited to 'lib/mogilefs/mogilefs.rb')
-rw-r--r-- | lib/mogilefs/mogilefs.rb | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index 2b02fb7..625e26f 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -52,12 +52,22 @@ class MogileFS::MogileFS < MogileFS::Client end ## - # Retrieves the contents of +key+. + # Retrieves the contents of +key+. If +dest+ is specified, +dest+ + # should be an IO-like object capable of receiving the +write+ method + # or a path name. - def get_file_data(key) + def get_file_data(key, dest = nil) paths = get_paths(key) sock = MogileFS::HTTPReader.first(paths, "GET", @get_file_data_timeout) - block_given? ? yield(sock) : sock.to_s + if dest + MogileFS::X.copy_stream(sock, dest) + elsif block_given? + yield(sock) + else + sock.to_s + end + ensure + sock.close unless sock.closed? end ## |