summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/pylon.lua1
-rw-r--r--irc/pylon.lua1
-rw-r--r--message.lua19
-rw-r--r--xmpp/pylon.lua1
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'