gluon/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua
Matthias Schiffer d7fb0c7fa0 gluon-announced: use respondd
This also adds an extended query protocol and deflate compression.
2015-04-23 18:36:00 +02:00

34 lines
678 B
Lua

local announce = require 'gluon.announce'
local deflate = require 'deflate'
local json = require 'luci.json'
local function collect(type)
return announce.collect_dir('/lib/gluon/announce/' .. type .. '.d')
end
module('gluon.announced', package.seeall)
function handle_request(query)
if query:match('^nodeinfo$') then
return json.encode(collect('nodeinfo'))
end
local m = query:match('^GET ([a-z ]+)$')
if m then
local data = {}
for q in m:gmatch('([a-z]+)') do
local ok, val = pcall(collect, q)
if ok then
data[q] = val
end
end
if next(data) then
return deflate.compress(json.encode(data))
end
end
end