summaryrefslogtreecommitdiff
path: root/xmpp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp.lua')
-rw-r--r--xmpp.lua67
1 files changed, 26 insertions, 41 deletions
diff --git a/xmpp.lua b/xmpp.lua
index a2ea6cb..aebbee9 100644
--- a/xmpp.lua
+++ b/xmpp.lua
@@ -8,17 +8,17 @@ local cqueues = require'cqueues'
local socket = require'cqueues.socket'
-local function connect(...)
- local sock = assert(socket.connect(... or server, 5222))
+local function connect()
+ local sock = assert(socket.connect(server, 5222))
sock:setmode('bn','bn')
local start = ([[
<?xml version='1.0'?><stream:stream from='%s' to='%s' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>]]):format(jid, server)
+ -- state of the art xml parser
local function check_and_send(test, text)
local x = sock:read('-2048')
print(x)
- assert(x:find(test))
if text then sock:write(text) end
end
@@ -38,50 +38,35 @@ local function connect(...)
return sock
end
--- sock:write[[
--- <iq type='set' id='1234'>
--- <pubsub xmlns='http://jabber.org/protocol/pubsub'>
--- <publish node='urn:xmpp:avatar:metadata'>
--- <item id='89229147c33129fd8d1ab177b6cbea725e72a8b4'>
--- <metadata xmlns='urn:xmpp:avatar:metadata'>
--- <info bytes='54660'
--- height='213'
--- width='203'
--- id='89229147c33129fd8d1ab177b6cbea725e72a8b4'
--- type='image/png'
--- url='https://ubq323.website/files/itAE9dXL.png'/>
--- </metadata>
--- </item>
--- </publish>
--- </pubsub>
--- </iq>]]
-
-local sock = connect(...)
local mucs = {
- 'ja@conference.ubq323.website'
+ 'ja@conference.ubq323.website',
+ 'a@conference.ubq323.website',
}
-for _, muc in ipairs(mucs) do
- sock:write(([[
- <presence to='%s'>
- <x xmlns='http://jabber.org/protocol/muc'/>
- </presence>]]):format(muc .. '/wilson'))
-end
+local xml = require'xml'
+local pprint=require'pprint'
+local function run_xmpp()
+ local sock = connect()
--- sock:write[[<iq type='get'
--- to='ja@conference.ubq323.website/viba'
--- id='retrieve1'>
--- <pubsub xmlns='http://jabber.org/protocol/pubsub'>
--- <items node='urn:xmpp:avatar:data'>
--- <item id='9c78e85250ef6f74f44f3142f559cc4f4465298c'/>
--- </items>
--- </pubsub>
--- </iq>]]
+ for _, muc in ipairs(mucs) do
+ sock:write(([[
+ <presence to='%s'>
+ <x xmlns='http://jabber.org/protocol/muc'>
+ <history maxstanzas='0'/>
+ </x>
+ </presence>]]):format(muc .. '/wilson'))
+ end
-local xml=require'xml'
-for x in xml.stanzae(function() return sock:read('-2048') end) do
- print(x)
+ for x in xml.stanzae(function() return sock:read('-2048') end) do
+ -- pprint(x)
+ local body = x'body' and x'body'[1]
+ if x.label == 'message' then pprint('M', x.xarg.from, body) end
+ end
end
+local cq = cqueues.new()
+cq:wrap(run_xmpp)
+pprint(cq:loop())
+