diff options
Diffstat (limited to 'lib/oxidized/api/rest.rb')
-rw-r--r-- | lib/oxidized/api/rest.rb | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/lib/oxidized/api/rest.rb b/lib/oxidized/api/rest.rb deleted file mode 100644 index cdf5c80..0000000 --- a/lib/oxidized/api/rest.rb +++ /dev/null @@ -1,93 +0,0 @@ -module Oxidized - require 'webrick' - require 'json' - module API - class Rest - module Helpers - def send res, msg='OK', ascii=false, status=200 - res.body = msg - if not ascii - msg = {:result => msg} - res['Content-Type'] = 'application/json' - res.status = status - res.body = JSON.dump msg - end - end - end - include Oxidized::API::Rest::Helpers - def initialize nodes, listen - @nodes = nodes - addr, port = listen.to_s.split ':' - port, addr = addr, nil if not port - @web = WEBrick::HTTPServer.new :BindAddress=>addr, :Port=>port, :Logger=>Log, :AccessLog=>[] - maps - end - def work - req = select @web.listeners, nil, nil, Config::Sleep - while req - @web.run req.first.first.accept - req = select @web.listeners, nil, nil, 0 - end - end - def maps - @web.mount '/nodes/next', Next, @nodes - @web.mount_proc '/nodes' do |req, res| - #script_name, #path_info - case req.path_info[1..-1] - # /nodes/reload - reloads list of nodes - when 'reload' - @nodes.load - send res - # /nodes/list - returns list of nodes - when 'list' - send res, @nodes.list - # /nodes/show/node - returns data about node - when /show\/(.*)/ - send res, @nodes.show($1) - # /nodes/fetch/<node> or /nodes/fetch/group/<group>/<node> - returns json formatted configuration file for <node> - when /fetch\/(.*)/ - begin - if $1.include? '/' - group, node = $1.split("/")[1..2] - else - group, node = nil, $1 - end - ascii = if node[-4..-1] == '.txt' - node = node[0..-5] - end - send res, @nodes.fetch(node, group), ascii - rescue Oxidized::NotSupported => e - send res, e - end - end - end - end - - # /nodes/next/node - moves node to head of queue - class Next < WEBrick::HTTPServlet::AbstractServlet - include Oxidized::API::Rest::Helpers - def initialize server, nodes - super server - @nodes = nodes - end - def do_GET req, res - @nodes.next req.path_info[1..-1] - send res - end - def do_PUT req, res - node = req.path_info[1..-1] - begin - opt = JSON.load req.body - Log.debug "before: #{@nodes.list}" - @nodes.next node, opt - Log.debug "after: #{@nodes.list}" - send res - rescue JSON::ParserError - send res, 'broken JSON', 400 - end - end - end - - end - end -end |