-- HTTP Access to PEP -> microblog -- By Kim Alvefur module:depends"http"; module:depends"pep"; local nodeprep = require "util.encodings".stringprep.nodeprep; local st = require "util.stanza"; local host, hosts = module.host, hosts; local function handle_request(event, path) local response = event.response; local user = nodeprep(path); if not user then return 400 end local jid = user .. "@" .. host; local pep_data = hosts[host].modules.pep.module.save(); if not pep_data.data[jid] or not pep_data.data[jid]["urn:xmpp:microblog:0"] then return 404; end local microblogdata = pep_data.data[jid]["urn:xmpp:microblog:0"][2]:get_child("entry", "http://www.w3.org/2005/Atom"); if not microblogdata then return 404; end local feed = st.stanza("feed", { xmlns="http://www.w3.org/2005/Atom" } ); local source = microblogdata:get_child("source"); if source then for i = 1,#source do feed:add_child(source[i]):up(); end for i = 1,#microblogdata do if microblogdata[i].name == "source" then table.remove(microblogdata, i); break end end end feed:add_child(microblogdata); response.headers.content_type = "application/atom+xml"; return "" .. tostring(feed) .. "\n"; end module:provides("http", { route = { ["GET /*"] = handle_request; }; });