diff options
author | joe <joe@jerkface.net> | 2013-07-10 23:50:14 -0400 |
---|---|---|
committer | joe <joe@jerkface.net> | 2013-07-10 23:50:14 -0400 |
commit | e532b9d2ae3263513d7de4aec4913e234b3f3b46 (patch) | |
tree | 6d7368fe428579e6cd2a3005b7db8a0dc9786f02 /Presence/XMPPTypes.hs | |
parent | 8ad4ea00e0fc2bbbf768bfc013c67b271a1da67d (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.hs | 7 |
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 | |||
38 | import SocketLike | 38 | import SocketLike |
39 | import GetHostByAddr | 39 | import GetHostByAddr |
40 | import Data.Maybe (listToMaybe,catMaybes) | 40 | import Data.Maybe (listToMaybe,catMaybes) |
41 | import Control.Monad.STM | ||
41 | 42 | ||
42 | class JabberClientSession session where | 43 | class 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 | ||
59 | class JabberPeerSession session where | 62 | class 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 |
73 | data JID = JID { name :: Maybe ByteString | 77 | data 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 | ||
95 | data Peer = LocalHost | RemotePeer SockAddr | 102 | data Peer = LocalHost | RemotePeer SockAddr |