diff options
| -rw-r--r-- | discord/pylon.lua | 1 | ||||
| -rw-r--r-- | irc/pylon.lua | 1 | ||||
| -rw-r--r-- | message.lua | 19 | ||||
| -rw-r--r-- | xmpp/pylon.lua | 1 |
4 files changed, 22 insertions, 0 deletions
diff --git a/discord/pylon.lua b/discord/pylon.lua index f035fbc..6cebc16 100644 --- a/discord/pylon.lua +++ b/discord/pylon.lua @@ -6,6 +6,7 @@ local class = require 'r.class' local BasePylon = require 'pylon' local Thing = require 'thing' +local Message = require 'message' local consts = require 'discord.consts' local opcodes = consts.opcodes diff --git a/irc/pylon.lua b/irc/pylon.lua index 1be3ab2..741440c 100644 --- a/irc/pylon.lua +++ b/irc/pylon.lua @@ -4,6 +4,7 @@ local class = require'r.class' local Thing = require'thing' local BasePylon = require'pylon' +local Message = require'message' local rirc = require'irc.rirc' local Irc = class.extend(BasePylon) diff --git a/message.lua b/message.lua new file mode 100644 index 0000000..092f332 --- /dev/null +++ b/message.lua @@ -0,0 +1,19 @@ +local class = require'r.class' + +local BasePylon = require 'pylon' +local Thing = require 'thing' + +local Message = class() +-- since this is the beating heart of wilson, it pays to do some validation +function Message.make(cls, self) + setmetatable(self,cls) + for k,v in pairs{ + pylon=BasePylon, + channel=Thing, + author=Thing, + } do assert(class.is(self[k],v), 'field '..k..' missing or wrong') end + assert(type(self.body)=='string','field body missing or wrong') + assert(self.pylon == self.channel.pylon and self.pylon == self.author.pylon, + "inconsistent pylons!") + return self end +return Message diff --git a/xmpp/pylon.lua b/xmpp/pylon.lua index 7fd7a1a..9f5ccfe 100644 --- a/xmpp/pylon.lua +++ b/xmpp/pylon.lua @@ -3,6 +3,7 @@ local class = require'r.class' local Thing = require'thing' local BasePylon = require 'pylon' +local Message = require 'message' local xml = require'xmpp.xml' local X,xmlify = xml.X, xml.xmlify local base64 = require'xmpp.base64' |
