M Network/Protocol/XMPP/Client.hs => Network/Protocol/XMPP/Client.hs +4 -10
@@ 38,6 38,7 @@ import qualified Network.Protocol.XMPP.SASL as SASL
import qualified Network.Protocol.XMPP.Stream as S
import Network.Protocol.XMPP.Util (mkElement, mkQName)
import Network.Protocol.XMPP.Stanzas (Stanza, stanzaToTree)
+import Network.Protocol.XMPP.Connection
data ConnectedClient = ConnectedClient JID S.Stream
@@ 103,13 104,6 @@ clientBind c = do
getTree c
return jid
--------------------------------------------------------------------------------
-
-putTree :: Client -> XmlTree -> IO ()
-putTree = S.putTree . clientStream
-
-getTree :: Client -> IO XmlTree
-getTree = S.getTree . clientStream
-
-putStanza :: Client -> Stanza -> IO ()
-putStanza c = (putTree c) . stanzaToTree
+instance Connection Client where
+ getTree = S.getTree . clientStream
+ putTree = S.putTree . clientStream
A Network/Protocol/XMPP/Connection.hs => Network/Protocol/XMPP/Connection.hs +38 -0
@@ 0,0 1,38 @@
+{- Copyright (C) 2010 John Millikin <jmillikin@gmail.com>
+ Stephan Maka <stephan@spaceboyz.net>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-}
+
+module Network.Protocol.XMPP.Connection
+ ( Connection
+ , getTree
+ , putTree
+ , putStanza
+ ) where
+
+import Text.XML.HXT.DOM.TypeDefs (XmlTree)
+import Network.Protocol.XMPP.Stanzas (Stanza, stanzaToTree)
+
+-- |Provides the basic operations for XMPP connections.
+class Connection c where
+ -- |Receive XML
+ getTree :: c -> IO XmlTree
+
+ -- |Send XML
+ putTree :: c -> XmlTree -> IO ()
+
+ -- |Send a stanza, uses putTree by default
+ putStanza :: c -> Stanza -> IO ()
+ putStanza c = putTree c . stanzaToTree
M network-protocol-xmpp.cabal => network-protocol-xmpp.cabal +2 -1
@@ 3,7 3,8 @@ version: 0.2
synopsis: Client <-> Server communication over XMPP
license: GPL
license-file: License.txt
-author: John Millikin
+author: John Millikin <jmillikin@gmail.com>
+ Stephan Maka <stephan@spaceboyz.net>
maintainer: jmillikin@gmail.com
build-type: Simple
cabal-version: >=1.6