summaryrefslogtreecommitdiff
path: root/Presence/XMPPTypes.hs
diff options
context:
space:
mode:
authorjoe <joe@jerkface.net>2013-07-10 23:50:14 -0400
committerjoe <joe@jerkface.net>2013-07-10 23:50:14 -0400
commite532b9d2ae3263513d7de4aec4913e234b3f3b46 (patch)
tree6d7368fe428579e6cd2a3005b7db8a0dc9786f02 /Presence/XMPPTypes.hs
parent8ad4ea00e0fc2bbbf768bfc013c67b271a1da67d (diff)
Send subscription requests to client for approval, and then
forward the answer to the remote peer. Todo: related roster update.
Diffstat (limited to 'Presence/XMPPTypes.hs')
-rw-r--r--Presence/XMPPTypes.hs7
1 files changed, 7 insertions, 0 deletions
diff --git a/Presence/XMPPTypes.hs b/Presence/XMPPTypes.hs
index e05d0782..6d00d509 100644
--- a/Presence/XMPPTypes.hs
+++ b/Presence/XMPPTypes.hs
@@ -38,6 +38,7 @@ import ByteStringOperators
38import SocketLike 38import SocketLike
39import GetHostByAddr 39import GetHostByAddr
40import Data.Maybe (listToMaybe,catMaybes) 40import Data.Maybe (listToMaybe,catMaybes)
41import Control.Monad.STM
41 42
42class JabberClientSession session where 43class JabberClientSession session where
43 data XMPPClass session 44 data XMPPClass session
@@ -48,6 +49,7 @@ class JabberClientSession session where
48 subscribe :: session -> Maybe JID -> IO (TChan Presence) 49 subscribe :: session -> Maybe JID -> IO (TChan Presence)
49 subscribeToRoster :: session -> IO (TChan RosterEvent) 50 subscribeToRoster :: session -> IO (TChan RosterEvent)
50 forCachedPresence :: session -> (Presence -> IO ()) -> IO () 51 forCachedPresence :: session -> (Presence -> IO ()) -> IO ()
52 sendPending :: session -> IO ()
51 getMyBuddies :: session -> IO [ByteString] 53 getMyBuddies :: session -> IO [ByteString]
52 getMySubscribers :: session -> IO [ByteString] 54 getMySubscribers :: session -> IO [ByteString]
53 getMyOthers :: session -> IO [ByteString] 55 getMyOthers :: session -> IO [ByteString]
@@ -55,6 +57,7 @@ class JabberClientSession session where
55 getMySolicited :: session -> IO [ByteString] 57 getMySolicited :: session -> IO [ByteString]
56 addSolicited :: session -> ByteString -> JID -> IO () 58 addSolicited :: session -> ByteString -> JID -> IO ()
57 isSubscribed :: session -> ByteString -> IO Bool 59 isSubscribed :: session -> ByteString -> IO Bool
60 approveSubscriber :: session -> ByteString -> IO ()
58 61
59class JabberPeerSession session where 62class JabberPeerSession session where
60 data XMPPPeerClass session 63 data XMPPPeerClass session
@@ -68,6 +71,7 @@ class JabberPeerSession session where
68 getBuddies :: XMPPPeerClass session -> ByteString -> IO [ByteString] 71 getBuddies :: XMPPPeerClass session -> ByteString -> IO [ByteString]
69 getSubscribers :: XMPPPeerClass session -> ByteString -> IO [ByteString] 72 getSubscribers :: XMPPPeerClass session -> ByteString -> IO [ByteString]
70 processApproval :: session -> ByteString -> JID -> IO () 73 processApproval :: session -> ByteString -> JID -> IO ()
74 processRequest :: session -> ByteString -> JID -> IO ()
71 75
72-- | Jabber ID (JID) datatype 76-- | Jabber ID (JID) datatype
73data JID = JID { name :: Maybe ByteString 77data JID = JID { name :: Maybe ByteString
@@ -90,6 +94,9 @@ data RosterEvent = RequestedSubscription
90 | NewBuddy 94 | NewBuddy
91 {- user: -} ByteString 95 {- user: -} ByteString
92 {- contact: -} ByteString 96 {- contact: -} ByteString
97 | PendingBuddy
98 {- user: -} ByteString
99 {- contact: -} ByteString
93 deriving Prelude.Show 100 deriving Prelude.Show
94 101
95data Peer = LocalHost | RemotePeer SockAddr 102data Peer = LocalHost | RemotePeer SockAddr