summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/oxidized/api/rest.rb6
-rw-r--r--lib/oxidized/nodes.rb6
-rw-r--r--lib/oxidized/output/file.rb4
-rw-r--r--oxidized.gemspec2
4 files changed, 17 insertions, 1 deletions
diff --git a/lib/oxidized/api/rest.rb b/lib/oxidized/api/rest.rb
index 783b445..d876917 100644
--- a/lib/oxidized/api/rest.rb
+++ b/lib/oxidized/api/rest.rb
@@ -41,6 +41,12 @@ module Oxidized
# /nodes/show/node - returns data about node
when /show\/(.*)/
send res, @nodes.show($1)
+ when /fetch\/(.*)/
+ begin
+ send res, @nodes.fetch($1)
+ rescue Oxidized::NotSupported => e
+ send res, e
+ end
end
end
end
diff --git a/lib/oxidized/nodes.rb b/lib/oxidized/nodes.rb
index e5e87e5..dcebe08 100644
--- a/lib/oxidized/nodes.rb
+++ b/lib/oxidized/nodes.rb
@@ -1,5 +1,6 @@
module Oxidized
require 'oxidized/node'
+ class Oxidized::NotSupported < StandardError; end
class Nodes < Array
attr_accessor :source
alias :put :unshift
@@ -26,6 +27,11 @@ module Oxidized
i = find_index node
self[i].serialize if i
end
+ def fetch node
+ i = find_index node
+ raise Oxidized::NotSupported unless Oxidized.mgr.output.respond_to? :fetch
+ self[i].output.new.fetch node
+ end
def del node
i = find_index node
delete_at i if i
diff --git a/lib/oxidized/output/file.rb b/lib/oxidized/output/file.rb
index 66ad178..8aaae0e 100644
--- a/lib/oxidized/output/file.rb
+++ b/lib/oxidized/output/file.rb
@@ -25,5 +25,9 @@ class OxFile < Output
open(file, 'w') { |fh| fh.write data }
end
+ def fetch node
+ IO.readlines File.join(@cfg[:directory], node)
+ end
+
end
end
diff --git a/oxidized.gemspec b/oxidized.gemspec
index 5a1dce9..38a2e41 100644
--- a/oxidized.gemspec
+++ b/oxidized.gemspec
@@ -1,6 +1,6 @@
Gem::Specification.new do |s|
s.name = 'oxidized'
- s.version = '0.0.11'
+ s.version = '0.0.14'
s.platform = Gem::Platform::RUBY
s.authors = [ 'Saku Ytti' ]
s.email = %w( saku@ytti.fi )