packages feed

pontarius-xmpp 0.4.3 → 0.4.4

raw patch · 13 files changed

+244/−23 lines, 13 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Network.Xmpp: connectionDetails :: StreamConfiguration -> ConnectionDetails
- Network.Xmpp: enablePresenceTracking :: SessionConfiguration -> Bool
- Network.Xmpp: enableRoster :: SessionConfiguration -> Bool
- Network.Xmpp: errorCondition :: StreamErrorInfo -> !StreamErrorCondition
- Network.Xmpp: errorText :: StreamErrorInfo -> !(Maybe (Maybe LangTag, NonemptyText))
- Network.Xmpp: errorXml :: StreamErrorInfo -> !(Maybe Element)
- Network.Xmpp: establishSession :: StreamConfiguration -> Bool
- Network.Xmpp: fromAnnotation :: Annotation -> f
- Network.Xmpp: inHandler :: Plugin' -> Stanza -> [Annotation] -> IO [(Stanza, [Annotation])]
- Network.Xmpp: iqErrorAttributes :: IQError -> ![ExtendedAttribute]
- Network.Xmpp: iqErrorFrom :: IQError -> !(Maybe Jid)
- Network.Xmpp: iqErrorID :: IQError -> !Text
- Network.Xmpp: iqErrorLangTag :: IQError -> !(Maybe LangTag)
- Network.Xmpp: iqErrorPayload :: IQError -> !(Maybe Element)
- Network.Xmpp: iqErrorStanzaError :: IQError -> !StanzaError
- Network.Xmpp: iqErrorTo :: IQError -> !(Maybe Jid)
- Network.Xmpp: iqRequestAttributes :: IQRequest -> ![ExtendedAttribute]
- Network.Xmpp: iqRequestFrom :: IQRequest -> !(Maybe Jid)
- Network.Xmpp: iqRequestID :: IQRequest -> !Text
- Network.Xmpp: iqRequestLangTag :: IQRequest -> !(Maybe LangTag)
- Network.Xmpp: iqRequestPayload :: IQRequest -> !Element
- Network.Xmpp: iqRequestTo :: IQRequest -> !(Maybe Jid)
- Network.Xmpp: iqRequestType :: IQRequest -> !IQRequestType
- Network.Xmpp: iqResultAttributes :: IQResult -> ![ExtendedAttribute]
- Network.Xmpp: iqResultFrom :: IQResult -> !(Maybe Jid)
- Network.Xmpp: iqResultID :: IQResult -> !Text
- Network.Xmpp: iqResultLangTag :: IQResult -> !(Maybe LangTag)
- Network.Xmpp: iqResultPayload :: IQResult -> !(Maybe Element)
- Network.Xmpp: iqResultTo :: IQResult -> !(Maybe Jid)
- Network.Xmpp: keepAlive :: SessionConfiguration -> Maybe Int
- Network.Xmpp: messageAttributes :: Message -> ![ExtendedAttribute]
- Network.Xmpp: messageErrorAttributes :: MessageError -> ![ExtendedAttribute]
- Network.Xmpp: messageErrorFrom :: MessageError -> !(Maybe Jid)
- Network.Xmpp: messageErrorID :: MessageError -> !(Maybe Text)
- Network.Xmpp: messageErrorLangTag :: MessageError -> !(Maybe LangTag)
- Network.Xmpp: messageErrorPayload :: MessageError -> ![Element]
- Network.Xmpp: messageErrorStanzaError :: MessageError -> !StanzaError
- Network.Xmpp: messageErrorTo :: MessageError -> !(Maybe Jid)
- Network.Xmpp: messageFrom :: Message -> !(Maybe Jid)
- Network.Xmpp: messageID :: Message -> !(Maybe Text)
- Network.Xmpp: messageLangTag :: Message -> !(Maybe LangTag)
- Network.Xmpp: messagePayload :: Message -> ![Element]
- Network.Xmpp: messageTo :: Message -> !(Maybe Jid)
- Network.Xmpp: messageType :: Message -> !MessageType
- Network.Xmpp: onConnectionClosed :: SessionConfiguration -> Session -> XmppFailure -> IO ()
- Network.Xmpp: onPresenceChange :: SessionConfiguration -> Maybe (Jid -> PeerStatus -> PeerStatus -> IO ())
- Network.Xmpp: onSessionUp :: Plugin' -> Session -> IO ()
- Network.Xmpp: outHandler :: Plugin' -> Stanza -> IO (Either XmppFailure ())
- Network.Xmpp: plugins :: SessionConfiguration -> [Plugin]
- Network.Xmpp: preferredLang :: StreamConfiguration -> !(Maybe LangTag)
- Network.Xmpp: presenceAttributes :: Presence -> ![ExtendedAttribute]
- Network.Xmpp: presenceErrorAttributes :: PresenceError -> ![ExtendedAttribute]
- Network.Xmpp: presenceErrorFrom :: PresenceError -> !(Maybe Jid)
- Network.Xmpp: presenceErrorID :: PresenceError -> !(Maybe Text)
- Network.Xmpp: presenceErrorLangTag :: PresenceError -> !(Maybe LangTag)
- Network.Xmpp: presenceErrorPayload :: PresenceError -> ![Element]
- Network.Xmpp: presenceErrorStanzaError :: PresenceError -> !StanzaError
- Network.Xmpp: presenceErrorTo :: PresenceError -> !(Maybe Jid)
- Network.Xmpp: presenceFrom :: Presence -> !(Maybe Jid)
- Network.Xmpp: presenceID :: Presence -> !(Maybe Text)
- Network.Xmpp: presenceLangTag :: Presence -> !(Maybe LangTag)
- Network.Xmpp: presencePayload :: Presence -> ![Element]
- Network.Xmpp: presenceTo :: Presence -> !(Maybe Jid)
- Network.Xmpp: presenceType :: Presence -> !PresenceType
- Network.Xmpp: resolvConf :: StreamConfiguration -> ResolvConf
- Network.Xmpp: saslFailureCondition :: SaslFailure -> SaslError
- Network.Xmpp: saslFailureText :: SaslFailure -> Maybe (Maybe LangTag, Text)
- Network.Xmpp: sessionStanzaIDs :: SessionConfiguration -> IO (IO Text)
- Network.Xmpp: sessionStreamConfiguration :: SessionConfiguration -> StreamConfiguration
- Network.Xmpp: stanzaErrorApplicationSpecificCondition :: StanzaError -> Maybe Element
- Network.Xmpp: stanzaErrorCondition :: StanzaError -> StanzaErrorCondition
- Network.Xmpp: stanzaErrorText :: StanzaError -> Maybe (Maybe LangTag, NonemptyText)
- Network.Xmpp: stanzaErrorType :: StanzaError -> StanzaErrorType
- Network.Xmpp: tlsBehaviour :: StreamConfiguration -> TlsBehaviour
- Network.Xmpp: tlsParams :: StreamConfiguration -> ClientParams
- Network.Xmpp: toJid :: StreamConfiguration -> !(Maybe (Jid, Bool))
- Network.Xmpp.IM: bodyContent :: MessageBody -> Text
- Network.Xmpp.IM: bodyLang :: MessageBody -> Maybe LangTag
- Network.Xmpp.IM: imBody :: InstantMessage -> [MessageBody]
- Network.Xmpp.IM: imSubject :: InstantMessage -> [MessageSubject]
- Network.Xmpp.IM: imThread :: InstantMessage -> Maybe MessageThread
- Network.Xmpp.IM: items :: Roster -> Map Jid Item
- Network.Xmpp.IM: priority :: IMPresence -> Maybe Int
- Network.Xmpp.IM: riApproved :: Item -> Bool
- Network.Xmpp.IM: riAsk :: Item -> Bool
- Network.Xmpp.IM: riGroups :: Item -> [Text]
- Network.Xmpp.IM: riJid :: Item -> Jid
- Network.Xmpp.IM: riName :: Item -> Maybe Text
- Network.Xmpp.IM: riSubscription :: Item -> Subscription
- Network.Xmpp.IM: showStatus :: IMPresence -> Maybe ShowStatus
- Network.Xmpp.IM: status :: IMPresence -> Maybe Text
- Network.Xmpp.IM: subjectContent :: MessageSubject -> Text
- Network.Xmpp.IM: subjectLang :: MessageSubject -> Maybe LangTag
- Network.Xmpp.IM: threadID :: MessageThread -> Text
- Network.Xmpp.IM: threadParent :: MessageThread -> Maybe Text
- Network.Xmpp.IM: ver :: Roster -> Maybe Text
- Network.Xmpp.Internal: answerTicket :: IQRequestTicket -> Either StanzaError (Maybe Element) -> [ExtendedAttribute] -> IO (Maybe (Either XmppFailure ()))
- Network.Xmpp.Internal: bodyContent :: MessageBody -> Text
- Network.Xmpp.Internal: bodyLang :: MessageBody -> Maybe LangTag
- Network.Xmpp.Internal: conf :: Session -> SessionConfiguration
- Network.Xmpp.Internal: connectionClosedHandler :: EventHandlers -> XmppFailure -> IO ()
- Network.Xmpp.Internal: connectionDetails :: StreamConfiguration -> ConnectionDetails
- Network.Xmpp.Internal: domainpart_ :: Jid -> !NonemptyText
- Network.Xmpp.Internal: enablePresenceTracking :: SessionConfiguration -> Bool
- Network.Xmpp.Internal: enableRoster :: SessionConfiguration -> Bool
- Network.Xmpp.Internal: errorCondition :: StreamErrorInfo -> !StreamErrorCondition
- Network.Xmpp.Internal: errorText :: StreamErrorInfo -> !(Maybe (Maybe LangTag, NonemptyText))
- Network.Xmpp.Internal: errorXml :: StreamErrorInfo -> !(Maybe Element)
- Network.Xmpp.Internal: establishSession :: StreamConfiguration -> Bool
- Network.Xmpp.Internal: eventHandlers :: Session -> TMVar EventHandlers
- Network.Xmpp.Internal: fromAnnotation :: Annotation -> f
- Network.Xmpp.Internal: fromNonempty :: NonemptyText -> Text
- Network.Xmpp.Internal: idGenerator :: Session -> IO Text
- Network.Xmpp.Internal: imBody :: InstantMessage -> [MessageBody]
- Network.Xmpp.Internal: imSubject :: InstantMessage -> [MessageSubject]
- Network.Xmpp.Internal: imThread :: InstantMessage -> Maybe MessageThread
- Network.Xmpp.Internal: inHandler :: Plugin' -> Stanza -> [Annotation] -> IO [(Stanza, [Annotation])]
- Network.Xmpp.Internal: iqErrorAttributes :: IQError -> ![ExtendedAttribute]
- Network.Xmpp.Internal: iqErrorFrom :: IQError -> !(Maybe Jid)
- Network.Xmpp.Internal: iqErrorID :: IQError -> !Text
- Network.Xmpp.Internal: iqErrorLangTag :: IQError -> !(Maybe LangTag)
- Network.Xmpp.Internal: iqErrorPayload :: IQError -> !(Maybe Element)
- Network.Xmpp.Internal: iqErrorStanzaError :: IQError -> !StanzaError
- Network.Xmpp.Internal: iqErrorTo :: IQError -> !(Maybe Jid)
- Network.Xmpp.Internal: iqHandlers :: Session -> TVar IQHandlers
- Network.Xmpp.Internal: iqRequestAnnotations :: IQRequestTicket -> [Annotation]
- Network.Xmpp.Internal: iqRequestAttributes :: IQRequest -> ![ExtendedAttribute]
- Network.Xmpp.Internal: iqRequestBody :: IQRequestTicket -> IQRequest
- Network.Xmpp.Internal: iqRequestFrom :: IQRequest -> !(Maybe Jid)
- Network.Xmpp.Internal: iqRequestID :: IQRequest -> !Text
- Network.Xmpp.Internal: iqRequestLangTag :: IQRequest -> !(Maybe LangTag)
- Network.Xmpp.Internal: iqRequestPayload :: IQRequest -> !Element
- Network.Xmpp.Internal: iqRequestTo :: IQRequest -> !(Maybe Jid)
- Network.Xmpp.Internal: iqRequestType :: IQRequest -> !IQRequestType
- Network.Xmpp.Internal: iqResultAttributes :: IQResult -> ![ExtendedAttribute]
- Network.Xmpp.Internal: iqResultFrom :: IQResult -> !(Maybe Jid)
- Network.Xmpp.Internal: iqResultID :: IQResult -> !Text
- Network.Xmpp.Internal: iqResultLangTag :: IQResult -> !(Maybe LangTag)
- Network.Xmpp.Internal: iqResultPayload :: IQResult -> !(Maybe Element)
- Network.Xmpp.Internal: iqResultTo :: IQResult -> !(Maybe Jid)
- Network.Xmpp.Internal: items :: Roster -> Map Jid Item
- Network.Xmpp.Internal: keepAlive :: SessionConfiguration -> Maybe Int
- Network.Xmpp.Internal: localpart_ :: Jid -> !(Maybe NonemptyText)
- Network.Xmpp.Internal: majorVersion :: Version -> !Integer
- Network.Xmpp.Internal: messageAttributes :: Message -> ![ExtendedAttribute]
- Network.Xmpp.Internal: messageErrorAttributes :: MessageError -> ![ExtendedAttribute]
- Network.Xmpp.Internal: messageErrorFrom :: MessageError -> !(Maybe Jid)
- Network.Xmpp.Internal: messageErrorID :: MessageError -> !(Maybe Text)
- Network.Xmpp.Internal: messageErrorLangTag :: MessageError -> !(Maybe LangTag)
- Network.Xmpp.Internal: messageErrorPayload :: MessageError -> ![Element]
- Network.Xmpp.Internal: messageErrorStanzaError :: MessageError -> !StanzaError
- Network.Xmpp.Internal: messageErrorTo :: MessageError -> !(Maybe Jid)
- Network.Xmpp.Internal: messageFrom :: Message -> !(Maybe Jid)
- Network.Xmpp.Internal: messageID :: Message -> !(Maybe Text)
- Network.Xmpp.Internal: messageLangTag :: Message -> !(Maybe LangTag)
- Network.Xmpp.Internal: messagePayload :: Message -> ![Element]
- Network.Xmpp.Internal: messageTo :: Message -> !(Maybe Jid)
- Network.Xmpp.Internal: messageType :: Message -> !MessageType
- Network.Xmpp.Internal: minorVersion :: Version -> !Integer
- Network.Xmpp.Internal: onConnectionClosed :: SessionConfiguration -> Session -> XmppFailure -> IO ()
- Network.Xmpp.Internal: onPresenceChange :: SessionConfiguration -> Maybe (Jid -> PeerStatus -> PeerStatus -> IO ())
- Network.Xmpp.Internal: onSessionUp :: Plugin' -> Session -> IO ()
- Network.Xmpp.Internal: outHandler :: Plugin' -> Stanza -> IO (Either XmppFailure ())
- Network.Xmpp.Internal: plugins :: SessionConfiguration -> [Plugin]
- Network.Xmpp.Internal: preferredLang :: StreamConfiguration -> !(Maybe LangTag)
- Network.Xmpp.Internal: presenceAttributes :: Presence -> ![ExtendedAttribute]
- Network.Xmpp.Internal: presenceErrorAttributes :: PresenceError -> ![ExtendedAttribute]
- Network.Xmpp.Internal: presenceErrorFrom :: PresenceError -> !(Maybe Jid)
- Network.Xmpp.Internal: presenceErrorID :: PresenceError -> !(Maybe Text)
- Network.Xmpp.Internal: presenceErrorLangTag :: PresenceError -> !(Maybe LangTag)
- Network.Xmpp.Internal: presenceErrorPayload :: PresenceError -> ![Element]
- Network.Xmpp.Internal: presenceErrorStanzaError :: PresenceError -> !StanzaError
- Network.Xmpp.Internal: presenceErrorTo :: PresenceError -> !(Maybe Jid)
- Network.Xmpp.Internal: presenceFrom :: Presence -> !(Maybe Jid)
- Network.Xmpp.Internal: presenceID :: Presence -> !(Maybe Text)
- Network.Xmpp.Internal: presenceLangTag :: Presence -> !(Maybe LangTag)
- Network.Xmpp.Internal: presencePayload :: Presence -> ![Element]
- Network.Xmpp.Internal: presenceRef :: Session -> TVar Peers
- Network.Xmpp.Internal: presenceTo :: Presence -> !(Maybe Jid)
- Network.Xmpp.Internal: presenceType :: Presence -> !PresenceType
- Network.Xmpp.Internal: primaryTag :: LangTag -> !Text
- Network.Xmpp.Internal: priority :: IMPresence -> Maybe Int
- Network.Xmpp.Internal: qiApproved :: QueryItem -> Maybe Bool
- Network.Xmpp.Internal: qiAsk :: QueryItem -> Bool
- Network.Xmpp.Internal: qiGroups :: QueryItem -> [Text]
- Network.Xmpp.Internal: qiJid :: QueryItem -> Jid
- Network.Xmpp.Internal: qiName :: QueryItem -> Maybe Text
- Network.Xmpp.Internal: qiSubscription :: QueryItem -> Maybe Subscription
- Network.Xmpp.Internal: queryItems :: Query -> [QueryItem]
- Network.Xmpp.Internal: queryVer :: Query -> Maybe Text
- Network.Xmpp.Internal: readerThread :: Session -> ThreadId
- Network.Xmpp.Internal: reconnectWait :: Session -> TVar Int
- Network.Xmpp.Internal: resolvConf :: StreamConfiguration -> ResolvConf
- Network.Xmpp.Internal: resourcepart_ :: Jid -> !(Maybe NonemptyText)
- Network.Xmpp.Internal: riApproved :: Item -> Bool
- Network.Xmpp.Internal: riAsk :: Item -> Bool
- Network.Xmpp.Internal: riGroups :: Item -> [Text]
- Network.Xmpp.Internal: riJid :: Item -> Jid
- Network.Xmpp.Internal: riName :: Item -> Maybe Text
- Network.Xmpp.Internal: riSubscription :: Item -> Subscription
- Network.Xmpp.Internal: rosterRef :: Session -> TVar Roster
- Network.Xmpp.Internal: rosterVer :: StreamFeatures -> !(Maybe Bool)
- Network.Xmpp.Internal: sRealm :: Session -> HostName
- Network.Xmpp.Internal: sSaslCredentials :: Session -> Maybe (ConnectionState -> [SaslHandler], Maybe Text)
- Network.Xmpp.Internal: saslFailureCondition :: SaslFailure -> SaslError
- Network.Xmpp.Internal: saslFailureText :: SaslFailure -> Maybe (Maybe LangTag, Text)
- Network.Xmpp.Internal: sendStanza' :: Session -> Stanza -> IO (Either XmppFailure ())
- Network.Xmpp.Internal: sessionStanzaIDs :: SessionConfiguration -> IO (IO Text)
- Network.Xmpp.Internal: sessionStreamConfiguration :: SessionConfiguration -> StreamConfiguration
- Network.Xmpp.Internal: showStatus :: IMPresence -> Maybe ShowStatus
- Network.Xmpp.Internal: stanzaCh :: Session -> TChan (Stanza, [Annotation])
- Network.Xmpp.Internal: stanzaErrorApplicationSpecificCondition :: StanzaError -> Maybe Element
- Network.Xmpp.Internal: stanzaErrorCondition :: StanzaError -> StanzaErrorCondition
- Network.Xmpp.Internal: stanzaErrorText :: StanzaError -> Maybe (Maybe LangTag, NonemptyText)
- Network.Xmpp.Internal: stanzaErrorType :: StanzaError -> StanzaErrorType
- Network.Xmpp.Internal: status :: IMPresence -> Maybe Text
- Network.Xmpp.Internal: stopThreads :: Session -> IO ()
- Network.Xmpp.Internal: streamAddress :: StreamState -> !(Maybe Text)
- Network.Xmpp.Internal: streamClose :: StreamHandle -> IO ()
- Network.Xmpp.Internal: streamConfiguration :: StreamState -> StreamConfiguration
- Network.Xmpp.Internal: streamConnectionState :: StreamState -> !ConnectionState
- Network.Xmpp.Internal: streamEventSource :: StreamState -> Source (ErrorT XmppFailure IO) Event
- Network.Xmpp.Internal: streamFeatures :: StreamState -> !StreamFeatures
- Network.Xmpp.Internal: streamFlush :: StreamHandle -> IO ()
- Network.Xmpp.Internal: streamFrom :: StreamState -> !(Maybe Jid)
- Network.Xmpp.Internal: streamHandle :: StreamState -> StreamHandle
- Network.Xmpp.Internal: streamId :: StreamState -> !(Maybe Text)
- Network.Xmpp.Internal: streamJid :: StreamState -> !(Maybe Jid)
- Network.Xmpp.Internal: streamLang :: StreamState -> !(Maybe LangTag)
- Network.Xmpp.Internal: streamOtherFeatures :: StreamFeatures -> ![Element]
- Network.Xmpp.Internal: streamReceive :: StreamHandle -> Int -> IO (Either XmppFailure ByteString)
- Network.Xmpp.Internal: streamRef :: Session -> TMVar Stream
- Network.Xmpp.Internal: streamSaslMechanisms :: StreamFeatures -> ![Text]
- Network.Xmpp.Internal: streamSend :: StreamHandle -> ByteString -> IO (Either XmppFailure ())
- Network.Xmpp.Internal: streamTls :: StreamFeatures -> !(Maybe Bool)
- Network.Xmpp.Internal: subjectContent :: MessageSubject -> Text
- Network.Xmpp.Internal: subjectLang :: MessageSubject -> Maybe LangTag
- Network.Xmpp.Internal: subtags :: LangTag -> ![Text]
- Network.Xmpp.Internal: threadID :: MessageThread -> Text
- Network.Xmpp.Internal: threadParent :: MessageThread -> Maybe Text
- Network.Xmpp.Internal: tlsBehaviour :: StreamConfiguration -> TlsBehaviour
- Network.Xmpp.Internal: tlsParams :: StreamConfiguration -> ClientParams
- Network.Xmpp.Internal: toJid :: StreamConfiguration -> !(Maybe (Jid, Bool))
- Network.Xmpp.Internal: unStream :: Stream -> TMVar StreamState
- Network.Xmpp.Internal: ver :: Roster -> Maybe Text
- Network.Xmpp.Internal: writeSemaphore :: Session -> WriteSemaphore
- Network.Xmpp.Lens: instance Applicative (Collect a)
- Network.Xmpp.Lens: instance Functor (Collect a)
- Network.Xmpp.Lens: instance HasStanzaPayload IQError (Maybe Element)
- Network.Xmpp.Lens: instance HasStanzaPayload IQRequest Element
- Network.Xmpp.Lens: instance HasStanzaPayload IQResult (Maybe Element)
- Network.Xmpp.Lens: instance HasStanzaPayload Message [Element]
- Network.Xmpp.Lens: instance HasStanzaPayload MessageError [Element]
- Network.Xmpp.Lens: instance HasStanzaPayload Presence [Element]
- Network.Xmpp.Lens: instance HasStanzaPayload PresenceError [Element]
- Network.Xmpp.Lens: instance IsErrorStanza IQError
- Network.Xmpp.Lens: instance IsErrorStanza MessageError
- Network.Xmpp.Lens: instance IsErrorStanza PresenceError
- Network.Xmpp.Lens: instance IsStanza IQError
- Network.Xmpp.Lens: instance IsStanza IQRequest
- Network.Xmpp.Lens: instance IsStanza IQResult
- Network.Xmpp.Lens: instance IsStanza Message
- Network.Xmpp.Lens: instance IsStanza MessageError
- Network.Xmpp.Lens: instance IsStanza Presence
- Network.Xmpp.Lens: instance IsStanza PresenceError
- Network.Xmpp.Lens: instance IsStanza Stanza
+ Network.Xmpp: StreamFeatures :: !(Maybe Bool) -> ![Text] -> !(Maybe Bool) -> !Bool -> ![Element] -> StreamFeatures
+ Network.Xmpp: [connectionDetails] :: StreamConfiguration -> ConnectionDetails
+ Network.Xmpp: [enablePresenceTracking] :: SessionConfiguration -> Bool
+ Network.Xmpp: [enableRoster] :: SessionConfiguration -> Bool
+ Network.Xmpp: [errorCondition] :: StreamErrorInfo -> !StreamErrorCondition
+ Network.Xmpp: [errorText] :: StreamErrorInfo -> !(Maybe (Maybe LangTag, NonemptyText))
+ Network.Xmpp: [errorXml] :: StreamErrorInfo -> !(Maybe Element)
+ Network.Xmpp: [establishSession] :: StreamConfiguration -> Bool
+ Network.Xmpp: [fromAnnotation] :: Annotation -> f
+ Network.Xmpp: [inHandler] :: Plugin' -> Stanza -> [Annotation] -> IO [(Stanza, [Annotation])]
+ Network.Xmpp: [iqErrorAttributes] :: IQError -> ![ExtendedAttribute]
+ Network.Xmpp: [iqErrorFrom] :: IQError -> !(Maybe Jid)
+ Network.Xmpp: [iqErrorID] :: IQError -> !Text
+ Network.Xmpp: [iqErrorLangTag] :: IQError -> !(Maybe LangTag)
+ Network.Xmpp: [iqErrorPayload] :: IQError -> !(Maybe Element)
+ Network.Xmpp: [iqErrorStanzaError] :: IQError -> !StanzaError
+ Network.Xmpp: [iqErrorTo] :: IQError -> !(Maybe Jid)
+ Network.Xmpp: [iqRequestAttributes] :: IQRequest -> ![ExtendedAttribute]
+ Network.Xmpp: [iqRequestFrom] :: IQRequest -> !(Maybe Jid)
+ Network.Xmpp: [iqRequestID] :: IQRequest -> !Text
+ Network.Xmpp: [iqRequestLangTag] :: IQRequest -> !(Maybe LangTag)
+ Network.Xmpp: [iqRequestPayload] :: IQRequest -> !Element
+ Network.Xmpp: [iqRequestTo] :: IQRequest -> !(Maybe Jid)
+ Network.Xmpp: [iqRequestType] :: IQRequest -> !IQRequestType
+ Network.Xmpp: [iqResultAttributes] :: IQResult -> ![ExtendedAttribute]
+ Network.Xmpp: [iqResultFrom] :: IQResult -> !(Maybe Jid)
+ Network.Xmpp: [iqResultID] :: IQResult -> !Text
+ Network.Xmpp: [iqResultLangTag] :: IQResult -> !(Maybe LangTag)
+ Network.Xmpp: [iqResultPayload] :: IQResult -> !(Maybe Element)
+ Network.Xmpp: [iqResultTo] :: IQResult -> !(Maybe Jid)
+ Network.Xmpp: [keepAlive] :: SessionConfiguration -> Maybe Int
+ Network.Xmpp: [messageAttributes] :: Message -> ![ExtendedAttribute]
+ Network.Xmpp: [messageErrorAttributes] :: MessageError -> ![ExtendedAttribute]
+ Network.Xmpp: [messageErrorFrom] :: MessageError -> !(Maybe Jid)
+ Network.Xmpp: [messageErrorID] :: MessageError -> !(Maybe Text)
+ Network.Xmpp: [messageErrorLangTag] :: MessageError -> !(Maybe LangTag)
+ Network.Xmpp: [messageErrorPayload] :: MessageError -> ![Element]
+ Network.Xmpp: [messageErrorStanzaError] :: MessageError -> !StanzaError
+ Network.Xmpp: [messageErrorTo] :: MessageError -> !(Maybe Jid)
+ Network.Xmpp: [messageFrom] :: Message -> !(Maybe Jid)
+ Network.Xmpp: [messageID] :: Message -> !(Maybe Text)
+ Network.Xmpp: [messageLangTag] :: Message -> !(Maybe LangTag)
+ Network.Xmpp: [messagePayload] :: Message -> ![Element]
+ Network.Xmpp: [messageTo] :: Message -> !(Maybe Jid)
+ Network.Xmpp: [messageType] :: Message -> !MessageType
+ Network.Xmpp: [onConnectionClosed] :: SessionConfiguration -> Session -> XmppFailure -> IO ()
+ Network.Xmpp: [onPresenceChange] :: SessionConfiguration -> Maybe (Jid -> PeerStatus -> PeerStatus -> IO ())
+ Network.Xmpp: [onSessionUp] :: Plugin' -> Session -> IO ()
+ Network.Xmpp: [outHandler] :: Plugin' -> Stanza -> IO (Either XmppFailure ())
+ Network.Xmpp: [plugins] :: SessionConfiguration -> [Plugin]
+ Network.Xmpp: [preferredLang] :: StreamConfiguration -> !(Maybe LangTag)
+ Network.Xmpp: [presenceAttributes] :: Presence -> ![ExtendedAttribute]
+ Network.Xmpp: [presenceErrorAttributes] :: PresenceError -> ![ExtendedAttribute]
+ Network.Xmpp: [presenceErrorFrom] :: PresenceError -> !(Maybe Jid)
+ Network.Xmpp: [presenceErrorID] :: PresenceError -> !(Maybe Text)
+ Network.Xmpp: [presenceErrorLangTag] :: PresenceError -> !(Maybe LangTag)
+ Network.Xmpp: [presenceErrorPayload] :: PresenceError -> ![Element]
+ Network.Xmpp: [presenceErrorStanzaError] :: PresenceError -> !StanzaError
+ Network.Xmpp: [presenceErrorTo] :: PresenceError -> !(Maybe Jid)
+ Network.Xmpp: [presenceFrom] :: Presence -> !(Maybe Jid)
+ Network.Xmpp: [presenceID] :: Presence -> !(Maybe Text)
+ Network.Xmpp: [presenceLangTag] :: Presence -> !(Maybe LangTag)
+ Network.Xmpp: [presencePayload] :: Presence -> ![Element]
+ Network.Xmpp: [presenceTo] :: Presence -> !(Maybe Jid)
+ Network.Xmpp: [presenceType] :: Presence -> !PresenceType
+ Network.Xmpp: [resolvConf] :: StreamConfiguration -> ResolvConf
+ Network.Xmpp: [saslFailureCondition] :: SaslFailure -> SaslError
+ Network.Xmpp: [saslFailureText] :: SaslFailure -> Maybe (Maybe LangTag, Text)
+ Network.Xmpp: [sessionStanzaIDs] :: SessionConfiguration -> IO (IO Text)
+ Network.Xmpp: [sessionStreamConfiguration] :: SessionConfiguration -> StreamConfiguration
+ Network.Xmpp: [stanzaErrorApplicationSpecificCondition] :: StanzaError -> Maybe Element
+ Network.Xmpp: [stanzaErrorCondition] :: StanzaError -> StanzaErrorCondition
+ Network.Xmpp: [stanzaErrorText] :: StanzaError -> Maybe (Maybe LangTag, NonemptyText)
+ Network.Xmpp: [stanzaErrorType] :: StanzaError -> StanzaErrorType
+ Network.Xmpp: [streamFeaturesMechanisms] :: StreamFeatures -> ![Text]
+ Network.Xmpp: [streamFeaturesOther] :: StreamFeatures -> ![Element]
+ Network.Xmpp: [streamFeaturesPreApproval] :: StreamFeatures -> !Bool
+ Network.Xmpp: [streamFeaturesRosterVer] :: StreamFeatures -> !(Maybe Bool)
+ Network.Xmpp: [streamFeaturesTls] :: StreamFeatures -> !(Maybe Bool)
+ Network.Xmpp: [tlsBehaviour] :: StreamConfiguration -> TlsBehaviour
+ Network.Xmpp: [tlsParams] :: StreamConfiguration -> ClientParams
+ Network.Xmpp: [toJid] :: StreamConfiguration -> !(Maybe (Jid, Bool))
+ Network.Xmpp: data StreamFeatures
+ Network.Xmpp: getFeatures :: Session -> IO StreamFeatures
+ Network.Xmpp.IM: [bodyContent] :: MessageBody -> Text
+ Network.Xmpp.IM: [bodyLang] :: MessageBody -> Maybe LangTag
+ Network.Xmpp.IM: [imBody] :: InstantMessage -> [MessageBody]
+ Network.Xmpp.IM: [imSubject] :: InstantMessage -> [MessageSubject]
+ Network.Xmpp.IM: [imThread] :: InstantMessage -> Maybe MessageThread
+ Network.Xmpp.IM: [items] :: Roster -> Map Jid Item
+ Network.Xmpp.IM: [priority] :: IMPresence -> Maybe Int
+ Network.Xmpp.IM: [riApproved] :: Item -> Bool
+ Network.Xmpp.IM: [riAsk] :: Item -> Bool
+ Network.Xmpp.IM: [riGroups] :: Item -> [Text]
+ Network.Xmpp.IM: [riJid] :: Item -> Jid
+ Network.Xmpp.IM: [riName] :: Item -> Maybe Text
+ Network.Xmpp.IM: [riSubscription] :: Item -> Subscription
+ Network.Xmpp.IM: [showStatus] :: IMPresence -> Maybe ShowStatus
+ Network.Xmpp.IM: [status] :: IMPresence -> Maybe Text
+ Network.Xmpp.IM: [subjectContent] :: MessageSubject -> Text
+ Network.Xmpp.IM: [subjectLang] :: MessageSubject -> Maybe LangTag
+ Network.Xmpp.IM: [threadID] :: MessageThread -> Text
+ Network.Xmpp.IM: [threadParent] :: MessageThread -> Maybe Text
+ Network.Xmpp.IM: [ver] :: Roster -> Maybe Text
+ Network.Xmpp.Internal: [answerTicket] :: IQRequestTicket -> Either StanzaError (Maybe Element) -> [ExtendedAttribute] -> IO (Maybe (Either XmppFailure ()))
+ Network.Xmpp.Internal: [bodyContent] :: MessageBody -> Text
+ Network.Xmpp.Internal: [bodyLang] :: MessageBody -> Maybe LangTag
+ Network.Xmpp.Internal: [conf] :: Session -> SessionConfiguration
+ Network.Xmpp.Internal: [connectionClosedHandler] :: EventHandlers -> XmppFailure -> IO ()
+ Network.Xmpp.Internal: [connectionDetails] :: StreamConfiguration -> ConnectionDetails
+ Network.Xmpp.Internal: [domainpart_] :: Jid -> !NonemptyText
+ Network.Xmpp.Internal: [enablePresenceTracking] :: SessionConfiguration -> Bool
+ Network.Xmpp.Internal: [enableRoster] :: SessionConfiguration -> Bool
+ Network.Xmpp.Internal: [errorCondition] :: StreamErrorInfo -> !StreamErrorCondition
+ Network.Xmpp.Internal: [errorText] :: StreamErrorInfo -> !(Maybe (Maybe LangTag, NonemptyText))
+ Network.Xmpp.Internal: [errorXml] :: StreamErrorInfo -> !(Maybe Element)
+ Network.Xmpp.Internal: [establishSession] :: StreamConfiguration -> Bool
+ Network.Xmpp.Internal: [eventHandlers] :: Session -> TMVar EventHandlers
+ Network.Xmpp.Internal: [fromAnnotation] :: Annotation -> f
+ Network.Xmpp.Internal: [fromNonempty] :: NonemptyText -> Text
+ Network.Xmpp.Internal: [idGenerator] :: Session -> IO Text
+ Network.Xmpp.Internal: [imBody] :: InstantMessage -> [MessageBody]
+ Network.Xmpp.Internal: [imSubject] :: InstantMessage -> [MessageSubject]
+ Network.Xmpp.Internal: [imThread] :: InstantMessage -> Maybe MessageThread
+ Network.Xmpp.Internal: [inHandler] :: Plugin' -> Stanza -> [Annotation] -> IO [(Stanza, [Annotation])]
+ Network.Xmpp.Internal: [iqErrorAttributes] :: IQError -> ![ExtendedAttribute]
+ Network.Xmpp.Internal: [iqErrorFrom] :: IQError -> !(Maybe Jid)
+ Network.Xmpp.Internal: [iqErrorID] :: IQError -> !Text
+ Network.Xmpp.Internal: [iqErrorLangTag] :: IQError -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [iqErrorPayload] :: IQError -> !(Maybe Element)
+ Network.Xmpp.Internal: [iqErrorStanzaError] :: IQError -> !StanzaError
+ Network.Xmpp.Internal: [iqErrorTo] :: IQError -> !(Maybe Jid)
+ Network.Xmpp.Internal: [iqHandlers] :: Session -> TVar IQHandlers
+ Network.Xmpp.Internal: [iqRequestAnnotations] :: IQRequestTicket -> [Annotation]
+ Network.Xmpp.Internal: [iqRequestAttributes] :: IQRequest -> ![ExtendedAttribute]
+ Network.Xmpp.Internal: [iqRequestBody] :: IQRequestTicket -> IQRequest
+ Network.Xmpp.Internal: [iqRequestFrom] :: IQRequest -> !(Maybe Jid)
+ Network.Xmpp.Internal: [iqRequestID] :: IQRequest -> !Text
+ Network.Xmpp.Internal: [iqRequestLangTag] :: IQRequest -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [iqRequestPayload] :: IQRequest -> !Element
+ Network.Xmpp.Internal: [iqRequestTo] :: IQRequest -> !(Maybe Jid)
+ Network.Xmpp.Internal: [iqRequestType] :: IQRequest -> !IQRequestType
+ Network.Xmpp.Internal: [iqResultAttributes] :: IQResult -> ![ExtendedAttribute]
+ Network.Xmpp.Internal: [iqResultFrom] :: IQResult -> !(Maybe Jid)
+ Network.Xmpp.Internal: [iqResultID] :: IQResult -> !Text
+ Network.Xmpp.Internal: [iqResultLangTag] :: IQResult -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [iqResultPayload] :: IQResult -> !(Maybe Element)
+ Network.Xmpp.Internal: [iqResultTo] :: IQResult -> !(Maybe Jid)
+ Network.Xmpp.Internal: [items] :: Roster -> Map Jid Item
+ Network.Xmpp.Internal: [keepAlive] :: SessionConfiguration -> Maybe Int
+ Network.Xmpp.Internal: [localpart_] :: Jid -> !(Maybe NonemptyText)
+ Network.Xmpp.Internal: [majorVersion] :: Version -> !Integer
+ Network.Xmpp.Internal: [messageAttributes] :: Message -> ![ExtendedAttribute]
+ Network.Xmpp.Internal: [messageErrorAttributes] :: MessageError -> ![ExtendedAttribute]
+ Network.Xmpp.Internal: [messageErrorFrom] :: MessageError -> !(Maybe Jid)
+ Network.Xmpp.Internal: [messageErrorID] :: MessageError -> !(Maybe Text)
+ Network.Xmpp.Internal: [messageErrorLangTag] :: MessageError -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [messageErrorPayload] :: MessageError -> ![Element]
+ Network.Xmpp.Internal: [messageErrorStanzaError] :: MessageError -> !StanzaError
+ Network.Xmpp.Internal: [messageErrorTo] :: MessageError -> !(Maybe Jid)
+ Network.Xmpp.Internal: [messageFrom] :: Message -> !(Maybe Jid)
+ Network.Xmpp.Internal: [messageID] :: Message -> !(Maybe Text)
+ Network.Xmpp.Internal: [messageLangTag] :: Message -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [messagePayload] :: Message -> ![Element]
+ Network.Xmpp.Internal: [messageTo] :: Message -> !(Maybe Jid)
+ Network.Xmpp.Internal: [messageType] :: Message -> !MessageType
+ Network.Xmpp.Internal: [minorVersion] :: Version -> !Integer
+ Network.Xmpp.Internal: [onConnectionClosed] :: SessionConfiguration -> Session -> XmppFailure -> IO ()
+ Network.Xmpp.Internal: [onPresenceChange] :: SessionConfiguration -> Maybe (Jid -> PeerStatus -> PeerStatus -> IO ())
+ Network.Xmpp.Internal: [onSessionUp] :: Plugin' -> Session -> IO ()
+ Network.Xmpp.Internal: [outHandler] :: Plugin' -> Stanza -> IO (Either XmppFailure ())
+ Network.Xmpp.Internal: [plugins] :: SessionConfiguration -> [Plugin]
+ Network.Xmpp.Internal: [preferredLang] :: StreamConfiguration -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [presenceAttributes] :: Presence -> ![ExtendedAttribute]
+ Network.Xmpp.Internal: [presenceErrorAttributes] :: PresenceError -> ![ExtendedAttribute]
+ Network.Xmpp.Internal: [presenceErrorFrom] :: PresenceError -> !(Maybe Jid)
+ Network.Xmpp.Internal: [presenceErrorID] :: PresenceError -> !(Maybe Text)
+ Network.Xmpp.Internal: [presenceErrorLangTag] :: PresenceError -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [presenceErrorPayload] :: PresenceError -> ![Element]
+ Network.Xmpp.Internal: [presenceErrorStanzaError] :: PresenceError -> !StanzaError
+ Network.Xmpp.Internal: [presenceErrorTo] :: PresenceError -> !(Maybe Jid)
+ Network.Xmpp.Internal: [presenceFrom] :: Presence -> !(Maybe Jid)
+ Network.Xmpp.Internal: [presenceID] :: Presence -> !(Maybe Text)
+ Network.Xmpp.Internal: [presenceLangTag] :: Presence -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [presencePayload] :: Presence -> ![Element]
+ Network.Xmpp.Internal: [presenceRef] :: Session -> TVar Peers
+ Network.Xmpp.Internal: [presenceTo] :: Presence -> !(Maybe Jid)
+ Network.Xmpp.Internal: [presenceType] :: Presence -> !PresenceType
+ Network.Xmpp.Internal: [primaryTag] :: LangTag -> !Text
+ Network.Xmpp.Internal: [priority] :: IMPresence -> Maybe Int
+ Network.Xmpp.Internal: [qiApproved] :: QueryItem -> Maybe Bool
+ Network.Xmpp.Internal: [qiAsk] :: QueryItem -> Bool
+ Network.Xmpp.Internal: [qiGroups] :: QueryItem -> [Text]
+ Network.Xmpp.Internal: [qiJid] :: QueryItem -> Jid
+ Network.Xmpp.Internal: [qiName] :: QueryItem -> Maybe Text
+ Network.Xmpp.Internal: [qiSubscription] :: QueryItem -> Maybe Subscription
+ Network.Xmpp.Internal: [queryItems] :: Query -> [QueryItem]
+ Network.Xmpp.Internal: [queryVer] :: Query -> Maybe Text
+ Network.Xmpp.Internal: [readerThread] :: Session -> ThreadId
+ Network.Xmpp.Internal: [reconnectWait] :: Session -> TVar Int
+ Network.Xmpp.Internal: [resolvConf] :: StreamConfiguration -> ResolvConf
+ Network.Xmpp.Internal: [resourcepart_] :: Jid -> !(Maybe NonemptyText)
+ Network.Xmpp.Internal: [riApproved] :: Item -> Bool
+ Network.Xmpp.Internal: [riAsk] :: Item -> Bool
+ Network.Xmpp.Internal: [riGroups] :: Item -> [Text]
+ Network.Xmpp.Internal: [riJid] :: Item -> Jid
+ Network.Xmpp.Internal: [riName] :: Item -> Maybe Text
+ Network.Xmpp.Internal: [riSubscription] :: Item -> Subscription
+ Network.Xmpp.Internal: [rosterRef] :: Session -> TVar Roster
+ Network.Xmpp.Internal: [sRealm] :: Session -> HostName
+ Network.Xmpp.Internal: [sSaslCredentials] :: Session -> Maybe (ConnectionState -> [SaslHandler], Maybe Text)
+ Network.Xmpp.Internal: [saslFailureCondition] :: SaslFailure -> SaslError
+ Network.Xmpp.Internal: [saslFailureText] :: SaslFailure -> Maybe (Maybe LangTag, Text)
+ Network.Xmpp.Internal: [sendStanza'] :: Session -> Stanza -> IO (Either XmppFailure ())
+ Network.Xmpp.Internal: [sessionStanzaIDs] :: SessionConfiguration -> IO (IO Text)
+ Network.Xmpp.Internal: [sessionStreamConfiguration] :: SessionConfiguration -> StreamConfiguration
+ Network.Xmpp.Internal: [showStatus] :: IMPresence -> Maybe ShowStatus
+ Network.Xmpp.Internal: [stanzaCh] :: Session -> TChan (Stanza, [Annotation])
+ Network.Xmpp.Internal: [stanzaErrorApplicationSpecificCondition] :: StanzaError -> Maybe Element
+ Network.Xmpp.Internal: [stanzaErrorCondition] :: StanzaError -> StanzaErrorCondition
+ Network.Xmpp.Internal: [stanzaErrorText] :: StanzaError -> Maybe (Maybe LangTag, NonemptyText)
+ Network.Xmpp.Internal: [stanzaErrorType] :: StanzaError -> StanzaErrorType
+ Network.Xmpp.Internal: [status] :: IMPresence -> Maybe Text
+ Network.Xmpp.Internal: [stopThreads] :: Session -> IO ()
+ Network.Xmpp.Internal: [streamAddress] :: StreamState -> !(Maybe Text)
+ Network.Xmpp.Internal: [streamClose] :: StreamHandle -> IO ()
+ Network.Xmpp.Internal: [streamConfiguration] :: StreamState -> StreamConfiguration
+ Network.Xmpp.Internal: [streamConnectionState] :: StreamState -> !ConnectionState
+ Network.Xmpp.Internal: [streamEventSource] :: StreamState -> Source (ErrorT XmppFailure IO) Event
+ Network.Xmpp.Internal: [streamFeaturesMechanisms] :: StreamFeatures -> ![Text]
+ Network.Xmpp.Internal: [streamFeaturesOther] :: StreamFeatures -> ![Element]
+ Network.Xmpp.Internal: [streamFeaturesPreApproval] :: StreamFeatures -> !Bool
+ Network.Xmpp.Internal: [streamFeaturesRosterVer] :: StreamFeatures -> !(Maybe Bool)
+ Network.Xmpp.Internal: [streamFeaturesTls] :: StreamFeatures -> !(Maybe Bool)
+ Network.Xmpp.Internal: [streamFeatures] :: StreamState -> !StreamFeatures
+ Network.Xmpp.Internal: [streamFlush] :: StreamHandle -> IO ()
+ Network.Xmpp.Internal: [streamFrom] :: StreamState -> !(Maybe Jid)
+ Network.Xmpp.Internal: [streamHandle] :: StreamState -> StreamHandle
+ Network.Xmpp.Internal: [streamId] :: StreamState -> !(Maybe Text)
+ Network.Xmpp.Internal: [streamJid] :: StreamState -> !(Maybe Jid)
+ Network.Xmpp.Internal: [streamLang] :: StreamState -> !(Maybe LangTag)
+ Network.Xmpp.Internal: [streamReceive] :: StreamHandle -> Int -> IO (Either XmppFailure ByteString)
+ Network.Xmpp.Internal: [streamRef] :: Session -> TMVar Stream
+ Network.Xmpp.Internal: [streamSend] :: StreamHandle -> ByteString -> IO (Either XmppFailure ())
+ Network.Xmpp.Internal: [subjectContent] :: MessageSubject -> Text
+ Network.Xmpp.Internal: [subjectLang] :: MessageSubject -> Maybe LangTag
+ Network.Xmpp.Internal: [subtags] :: LangTag -> ![Text]
+ Network.Xmpp.Internal: [threadID] :: MessageThread -> Text
+ Network.Xmpp.Internal: [threadParent] :: MessageThread -> Maybe Text
+ Network.Xmpp.Internal: [tlsBehaviour] :: StreamConfiguration -> TlsBehaviour
+ Network.Xmpp.Internal: [tlsParams] :: StreamConfiguration -> ClientParams
+ Network.Xmpp.Internal: [toJid] :: StreamConfiguration -> !(Maybe (Jid, Bool))
+ Network.Xmpp.Internal: [unStream] :: Stream -> TMVar StreamState
+ Network.Xmpp.Internal: [ver] :: Roster -> Maybe Text
+ Network.Xmpp.Internal: [writeSemaphore] :: Session -> WriteSemaphore
+ Network.Xmpp.Lens: featureMechanismsL :: Lens StreamFeatures [Text]
+ Network.Xmpp.Lens: featurePreApprovalL :: Lens StreamFeatures Bool
+ Network.Xmpp.Lens: featureRosterVerL :: Lens StreamFeatures (Maybe Bool)
+ Network.Xmpp.Lens: featureTlsL :: Lens StreamFeatures (Maybe Bool)
+ Network.Xmpp.Lens: featuresOtherL :: Lens StreamFeatures [Element]
+ Network.Xmpp.Lens: instance GHC.Base.Applicative (Network.Xmpp.Lens.Collect a)
+ Network.Xmpp.Lens: instance GHC.Base.Functor (Network.Xmpp.Lens.Collect a)
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.HasStanzaPayload Network.Xmpp.Types.IQError (GHC.Base.Maybe Data.XML.Types.Element)
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.HasStanzaPayload Network.Xmpp.Types.IQRequest Data.XML.Types.Element
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.HasStanzaPayload Network.Xmpp.Types.IQResult (GHC.Base.Maybe Data.XML.Types.Element)
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.HasStanzaPayload Network.Xmpp.Types.Message [Data.XML.Types.Element]
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.HasStanzaPayload Network.Xmpp.Types.MessageError [Data.XML.Types.Element]
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.HasStanzaPayload Network.Xmpp.Types.Presence [Data.XML.Types.Element]
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.HasStanzaPayload Network.Xmpp.Types.PresenceError [Data.XML.Types.Element]
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsErrorStanza Network.Xmpp.Types.IQError
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsErrorStanza Network.Xmpp.Types.MessageError
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsErrorStanza Network.Xmpp.Types.PresenceError
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsStanza Network.Xmpp.Types.IQError
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsStanza Network.Xmpp.Types.IQRequest
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsStanza Network.Xmpp.Types.IQResult
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsStanza Network.Xmpp.Types.Message
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsStanza Network.Xmpp.Types.MessageError
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsStanza Network.Xmpp.Types.Presence
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsStanza Network.Xmpp.Types.PresenceError
+ Network.Xmpp.Lens: instance Network.Xmpp.Lens.IsStanza Network.Xmpp.Types.Stanza
- Network.Xmpp: type Plugin = (Stanza -> IO (Either XmppFailure ())) -> ErrorT XmppFailure IO Plugin'
+ Network.Xmpp: type Plugin = (Stanza -> IO (Either XmppFailure ())) pass stanza to next plugin -> ErrorT XmppFailure IO Plugin'
- Network.Xmpp.Internal: StreamFeatures :: !(Maybe Bool) -> ![Text] -> !(Maybe Bool) -> ![Element] -> StreamFeatures
+ Network.Xmpp.Internal: StreamFeatures :: !(Maybe Bool) -> ![Text] -> !(Maybe Bool) -> !Bool -> ![Element] -> StreamFeatures
- Network.Xmpp.Internal: hashToken :: Hash ctx hash => hash
+ Network.Xmpp.Internal: hashToken :: (Hash ctx hash) => hash
- Network.Xmpp.Internal: readMaybe_ :: Read a => String -> Maybe a
+ Network.Xmpp.Internal: readMaybe_ :: (Read a) => String -> Maybe a
- Network.Xmpp.Internal: scram :: Hash ctx hash => hash -> Text -> Maybe Text -> Text -> ErrorT AuthFailure (StateT StreamState IO) ()
+ Network.Xmpp.Internal: scram :: (Hash ctx hash) => hash -> Text -> Maybe Text -> Text -> ErrorT AuthFailure (StateT StreamState IO) ()
- Network.Xmpp.Internal: type Plugin = (Stanza -> IO (Either XmppFailure ())) -> ErrorT XmppFailure IO Plugin'
+ Network.Xmpp.Internal: type Plugin = (Stanza -> IO (Either XmppFailure ())) pass stanza to next plugin -> ErrorT XmppFailure IO Plugin'
- Network.Xmpp.Internal: type StanzaHandler = (Stanza -> IO (Either XmppFailure ())) -> Stanza -> [Annotation] -> IO [(Stanza, [Annotation])]
+ Network.Xmpp.Internal: type StanzaHandler = (Stanza -> IO (Either XmppFailure ())) outgoing stanza -> Stanza stanza to handle -> [Annotation] annotations added by previous handlers -> IO [(Stanza, [Annotation])] modified stanzas and /additional/ annotations
- Network.Xmpp.Lens: type Traversal a b = Applicative f => (b -> f b) -> a -> f a
+ Network.Xmpp.Lens: type Traversal a b = forall f. Applicative f => (b -> f b) -> a -> f a

Files

pontarius-xmpp.cabal view
@@ -1,5 +1,5 @@ Name:          pontarius-xmpp-Version:       0.4.3+Version:       0.4.4 Cabal-Version: >= 1.9.2 Build-Type:    Custom License:       BSD3@@ -154,6 +154,8 @@   Other-modules: Tests.Arbitrary                , Tests.Arbitrary.Xml                , Tests.Arbitrary.Xmpp+               , Tests.Parsers+               , Tests.Picklers   ghc-options: -Wall -O2 -fno-warn-orphans  Test-Suite doctest
source/Network/Xmpp.hs view
@@ -59,6 +59,9 @@   , endSession   , waitForStream   , streamState+    -- ** Feature+  , StreamFeatures(..)+  , getFeatures     -- ** Authentication handlers     -- | The use of 'scramSha1' is /recommended/, but 'digestMd5' might be     -- useful for interaction with older implementations.
source/Network/Xmpp/Concurrent/Basic.hs view
@@ -56,7 +56,7 @@     s <- atomically $ readTMVar st     withStream' (gets streamJid) s --- | Return the JID assigned to us by the server+-- | Return the stream features the server announced getFeatures :: Session -> IO StreamFeatures getFeatures Session{streamRef = st} = do     s <- atomically $ readTMVar st
source/Network/Xmpp/IM/Roster.hs view
@@ -143,7 +143,7 @@  retrieveRoster :: Maybe Roster -> Session -> IO (Maybe Roster) retrieveRoster mbOldRoster sess = do-    useVersioning <- isJust . rosterVer <$> getFeatures sess+    useVersioning <- isJust . streamFeaturesRosterVer <$> getFeatures sess     let version = if useVersioning                 then case mbOldRoster of                       Nothing -> Just ""
source/Network/Xmpp/IM/Roster/Types.hs view
@@ -7,7 +7,20 @@  -- Note that `Remove' is not exported from IM.hs, as it will never be visible to -- the user anyway.-data Subscription = None | To | From | Both | Remove deriving (Eq, Read, Show)+data Subscription = None -- ^ the user does not have a subscription to the+                         -- contact's presence information, and the contact does+                         -- not have a subscription to the user's presence+                         -- information+                  | To  -- ^ the user has a subscription to the contact's+                        -- presence information, but the contact does not have a+                        -- subscription to the user's presence information+                  | From -- ^ the contact has a subscription to the user's+                         -- presence information, but the user does not have a+                         -- subscription to the contact's presence information+                  | Both -- ^ both the user and the contact have subscriptions+                         -- to each other's presence information+                  | Remove+                  deriving (Eq, Read, Show)  data Roster = Roster { ver :: Maybe Text                      , items :: Map.Map Jid Item
source/Network/Xmpp/Lens.hs view
@@ -70,6 +70,14 @@        , stanzaErrorConditionL        , stanzaErrorTextL        , stanzaErrorApplL+         -- ** Stream++         -- ** Stream Features+       , featureTlsL+       , featureMechanismsL+       , featureRosterVerL+       , featurePreApprovalL+       , featuresOtherL          -- *** 'StreamConfiguration'        , preferredLangL        , toJidL@@ -159,10 +167,10 @@  -- | Van-Laarhoven lenses. {-# DEPRECATED Lens "Use Lens' from lens-family or lens" #-}-type Lens a b = Functor f => (b -> f b) -> a -> f a+type Lens a b = forall f . Functor f => (b -> f b) -> a -> f a  {-# DEPRECATED Traversal "Use Traversal' from lens-family or lens" #-}-type Traversal a b = Applicative f => (b -> f b) -> a -> f a+type Traversal a b = forall f . Applicative f => (b -> f b) -> a -> f a  type Prism a b = forall p f. (Choice p, Applicative f) => p b (f b) -> p a (f a) @@ -577,7 +585,7 @@ itemsL :: Lens Roster (Map.Map Jid Item) itemsL inj r@Roster{items = x} = (\x' -> r{items = x'}) <$> inj x --- Item+-- Service Discovery Item ----------------------  riApprovedL :: Lens Item Bool@@ -682,3 +690,25 @@ priorityL :: Lens IMPresence (Maybe Int) priorityL inj m@IMP{priority = bc} =     (\bc' -> m{priority = bc'}) <$> inj bc++-- StreamFeatures+-------------------++featureTlsL :: Lens StreamFeatures (Maybe Bool)+featureTlsL = mkLens streamFeaturesTls (\x sf -> sf{streamFeaturesTls = x})++featureMechanismsL :: Lens StreamFeatures [Text]+featureMechanismsL =+    mkLens streamFeaturesMechanisms (\x sf -> sf{streamFeaturesMechanisms = x})++featureRosterVerL :: Lens StreamFeatures (Maybe Bool)+featureRosterVerL =+    mkLens streamFeaturesRosterVer (\x sf -> sf{streamFeaturesRosterVer = x})++featurePreApprovalL :: Lens StreamFeatures Bool+featurePreApprovalL =+    mkLens streamFeaturesPreApproval (\x sf -> sf{streamFeaturesPreApproval = x})++featuresOtherL :: Lens StreamFeatures [Element]+featuresOtherL =+    mkLens streamFeaturesOther (\x sf -> sf{streamFeaturesOther = x})
source/Network/Xmpp/Marshal.hs view
@@ -350,18 +350,21 @@ -- Pickler/Unpickler for the stream features - TLS, SASL, and the rest. xpStreamFeatures :: PU [Node] StreamFeatures xpStreamFeatures = ("xpStreamFeatures","") <?> xpWrap-    (\(tls, sasl, ver, rest) -> StreamFeatures tls (mbl sasl) ver rest)-    (\(StreamFeatures tls sasl ver rest) -> (tls, lmb sasl, ver, rest))+    (\(tls, sasl, ver, preAppr, rest)+       -> StreamFeatures tls (mbl sasl) ver preAppr rest)+    (\(StreamFeatures tls sasl ver preAppr rest)+     -> (tls, lmb sasl, ver, preAppr, rest))     (xpElemNodes          (Name              "features"              (Just "http://etherx.jabber.org/streams")              (Just "stream")          )-         (xp4Tuple+         (xp5Tuple               (xpOption pickleTlsFeature)               (xpOption pickleSaslFeature)               (xpOption pickleRosterVer)+              picklePreApproval               (xpAll xpElemVerbatim)          )     )@@ -377,6 +380,8 @@              "{urn:ietf:params:xml:ns:xmpp-sasl}mechanism" (xpContent xpId))     pickleRosterVer = xpElemNodes "{urn:xmpp:features:rosterver}ver" $                            xpElemExists "{urn:xmpp:features:rosterver}optional"+    picklePreApproval = xpElemExists "{urn:xmpp:features:pre-approval}sub"+  xpJid :: PU Text Jid xpJid = ("xpJid", "") <?>
source/Network/Xmpp/Sasl.hs view
@@ -39,7 +39,7 @@     flip withStream stream $ do         -- Chooses the first mechanism that is acceptable by both the client and the         -- server.-        mechanisms <- gets $ streamSaslMechanisms . streamFeatures+        mechanisms <- gets $ streamFeaturesMechanisms . streamFeatures         case (filter (\(name, _) -> name `elem` mechanisms)) handlers of             [] -> return $ Right $ Just $ AuthNoAcceptableMechanism mechanisms             (_name, handler):_ -> do
source/Network/Xmpp/Stream.hs view
@@ -497,7 +497,7 @@       streamConnectionState = Closed     , streamHandle = zeroHandle     , streamEventSource = zeroSource-    , streamFeatures = StreamFeatures Nothing [] Nothing []+    , streamFeatures = mempty     , streamAddress = Nothing     , streamFrom = Nothing     , streamId = Nothing@@ -534,7 +534,7 @@                   { streamConnectionState = Plain                   , streamHandle = hand                   , streamEventSource = eSource-                  , streamFeatures = StreamFeatures Nothing [] Nothing []+                  , streamFeatures = mempty                   , streamAddress = Just $ Text.pack realm                   , streamFrom = Nothing                   , streamId = Nothing
source/Network/Xmpp/Tls.hs view
@@ -71,7 +71,7 @@             liftIO $ errorM "Pontarius.Xmpp.Tls" "The stream is already secured."             throwError TlsStreamSecured     features <- lift $ gets streamFeatures-    case (tlsBehaviour conf, streamTls features) of+    case (tlsBehaviour conf, streamFeaturesTls features) of         (RequireTls  , Just _   ) -> startTls         (RequireTls  , Nothing  ) -> throwError TlsNoServerSupport         (PreferTls   , Just _   ) -> startTls
source/Network/Xmpp/Types.hs view
@@ -720,16 +720,38 @@     tagChars = ['a'..'z'] ++ ['A'..'Z']  data StreamFeatures = StreamFeatures-    { streamTls            :: !(Maybe Bool)-    , streamSaslMechanisms :: ![Text.Text]-    , rosterVer            :: !(Maybe Bool) -- ^ @Nothing@ for no roster-                                            -- versioning, @Just False@ for-                                            -- roster versioning and @Just True@-                                            -- when the server sends the-                                            -- non-standard "optional" element-                                            -- (observed with prosody).-    , streamOtherFeatures  :: ![Element] -- TODO: All feature elements instead?+    { streamFeaturesTls         :: !(Maybe Bool)+    , streamFeaturesMechanisms  :: ![Text.Text]+    , streamFeaturesRosterVer   :: !(Maybe Bool)+      -- ^ @Nothing@ for no roster versioning, @Just False@ for roster+      -- versioning and @Just True@ when the server sends the non-standard+      -- "optional" element (observed with prosody).+    , streamFeaturesPreApproval :: !Bool -- ^ Does the server support pre-approval+    , streamFeaturesOther       :: ![Element]+      -- TODO: All feature elements instead?     } deriving (Eq, Show)++instance Monoid StreamFeatures where+    mempty = StreamFeatures+               { streamFeaturesTls         = Nothing+               , streamFeaturesMechanisms  = []+               , streamFeaturesRosterVer   = Nothing+               , streamFeaturesPreApproval = False+               , streamFeaturesOther       = []+               }+    mappend sf1 sf2 =+        StreamFeatures+               { streamFeaturesTls = mplusOn streamFeaturesTls+               , streamFeaturesMechanisms  = mplusOn streamFeaturesMechanisms+               , streamFeaturesRosterVer   = mplusOn streamFeaturesRosterVer+               , streamFeaturesPreApproval =+                 streamFeaturesPreApproval sf1+                 || streamFeaturesPreApproval sf2+               , streamFeaturesOther       = mplusOn streamFeaturesOther++               }+      where+        mplusOn f = f sf1 `mplus` f sf2  -- | Signals the state of the stream connection. data ConnectionState
+ tests/Tests/Parsers.hs view
@@ -0,0 +1,57 @@+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}++module Tests.Parsers where++import Control.Applicative ((<$>))+import Network.Xmpp.Internal+import Test.Hspec+import Test.Tasty.QuickCheck+import Test.Tasty+import Test.Tasty.TH+import Test.Tasty.HUnit++import Tests.Arbitrary ()++case_JidFromText :: Assertion+case_JidFromText = hspec . describe "jidFromText" $ do+    it "parses a full JID" $ jidFromText "foo@bar.com/quux"+                             `shouldBe` Just (Jid (Just "foo")+                                          "bar.com"+                                          (Just "quux"))+    it "parses a bare JID" $ jidFromText "foo@bar.com"+                             `shouldBe` Just (Jid (Just "foo")+                                          "bar.com"+                                          Nothing)+    it "parses a domain" $ jidFromText "bar.com"+                             `shouldBe` Just (Jid Nothing+                                          "bar.com"+                                          Nothing)+    it "parses domain with resource" $ jidFromText "bar.com/quux"+                             `shouldBe` Just (Jid Nothing+                                          "bar.com"+                                          (Just "quux"))+    it "rejects multiple '@'" $  shouldReject "foo@bar@baz"+    it "rejects multiple '/'" $  shouldReject "foo/bar/baz"+    it "rejects multiple '/' after '@'" $ shouldReject  "quux@foo/bar/baz"+    it "rejects '@' after '/'" $ shouldReject "foo/bar@baz"+    it "rejects empty local part" $ shouldReject "@bar/baz"+    it "rejects empty resource part" $ shouldReject "foo@bar/"+    it "rejects empty domain part" $ shouldReject "foo@/baz"+  where shouldReject jid = jidFromText jid `shouldBe` Nothing++prop_jidFromText_rightInverse :: Jid -> Bool+prop_jidFromText_rightInverse j = let jidText = jidToText j in+        (jidToText <$> jidFromText jidText) == Just jidText++prop_jidFromText_leftInverse :: Jid -> Bool+prop_jidFromText_leftInverse jid = (jidFromText $ jidToText jid) == Just jid+++case_LangTagParser :: Assertion+case_LangTagParser = hspec . describe "langTagFromText" $+                    it "has some properties" $ pendingWith "Check requirements"++parserTests :: TestTree+parserTests = $testGroupGenerator
+ tests/Tests/Picklers.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE OverloadedStrings #-}+module Tests.Picklers where++import Tests.Arbitrary ()+import Data.XML.Pickle+import Network.Xmpp.Internal+import Test.Tasty+import Test.Tasty.TH+import Test.Tasty.QuickCheck+import Data.Text (Text)++import Data.XML.Types++-- | Test Pickler self-inverse: Check that unpickling after pickling gives the+-- original value+tpsi :: Eq a => PU t a -> a -> Bool+tpsi p = \x -> case unpickle p (pickle p x) of+    Left _ -> False+    Right x' -> x == x'++testPickler :: PU t a -> a -> IO ()+testPickler p x = case unpickle p (pickle p x) of+    Left e -> putStrLn $ ppUnpickleError e+    Right _ -> putStrLn "OK."++prop_xpStreamStanza_invertibe :: Either StreamErrorInfo Stanza -> Bool+prop_xpStreamStanza_invertibe         = tpsi xpStreamStanza+prop_xpStanza_invertibe :: Stanza -> Bool+prop_xpStanza_invertibe               = tpsi xpStanza+prop_xpMessage_invertibe :: Message -> Bool+prop_xpMessage_invertibe              = tpsi xpMessage+prop_xpPresence_invertibe             = tpsi xpPresence+prop_xpPresence_invertibe :: Presence -> Bool+prop_xpIQRequest_invertibe            = tpsi xpIQRequest+prop_xpIQRequest_invertibe :: IQRequest -> Bool+prop_xpIQResult_invertibe             = tpsi xpIQResult+prop_xpIQResult_invertibe :: IQResult -> Bool+prop_xpErrorCondition_invertibe       = tpsi xpStanzaErrorCondition+prop_xpErrorCondition_invertibe :: StanzaErrorCondition -> Bool+prop_xpStanzaError_invertibe          = tpsi xpStanzaError+prop_xpStanzaError_invertibe :: StanzaError -> Bool+prop_xpMessageError_invertibe         = tpsi xpMessageError+prop_xpMessageError_invertibe :: MessageError -> Bool+prop_xpPresenceError_invertibe        = tpsi xpPresenceError+prop_xpPresenceError_invertibe :: PresenceError -> Bool+prop_xpIQError_invertibe              = tpsi xpIQError+prop_xpIQError_invertibe :: IQError -> Bool+prop_xpStreamError_invertibe          = tpsi xpStreamError+prop_xpStreamError_invertibe :: StreamErrorInfo -> Bool+prop_xpLangTag_invertibe              = tpsi xpLangTag+prop_xpLangTag_invertibe :: Maybe LangTag -> Bool+prop_xpLang_invertibe                 = tpsi xpLang+prop_xpLang_invertibe :: LangTag -> Bool+prop_xpStream_invertibe               = tpsi xpStream+prop_xpStream_invertibe :: ( Text+                           , Maybe Jid+                           , Maybe Jid+                           , Maybe Text+                           , Maybe LangTag )+                           -> Bool+prop_xpJid_invertibe                  = tpsi xpJid+prop_xpJid_invertibe :: Jid -> Bool+prop_xpIQRequestType_invertibe        = tpsi xpIQRequestType+prop_xpIQRequestType_invertibe :: IQRequestType -> Bool+prop_xpMessageType_invertibe          = tpsi xpMessageType+prop_xpMessageType_invertibe :: MessageType -> Bool+prop_xpPresenceType_invertibe         = tpsi xpPresenceType+prop_xpPresenceType_invertibe :: PresenceType -> Bool+prop_xpStanzaErrorType_invertibe      = tpsi xpStanzaErrorType+prop_xpStanzaErrorType_invertibe :: StanzaErrorType -> Bool+prop_xpStanzaErrorCondition_invertibe = tpsi xpStanzaErrorCondition+prop_xpStanzaErrorCondition_invertibe :: StanzaErrorCondition -> Bool+prop_xpStreamErrorCondition_invertibe = tpsi xpStreamErrorCondition+prop_xpStreamErrorCondition_invertibe :: StreamErrorCondition -> Bool+-- prop_xpStreamFeatures_invertibe = testPicklerInvertible xpStreamFeatures++picklerTests :: TestTree+picklerTests = $testGroupGenerator++bad = StreamErrorInfo { errorCondition = StreamInvalidFrom+                      , errorText = Just (Nothing,"")+                      , errorXml = Just (+                          Element { elementName =+                                         Name { nameLocalName = "\65044"+                                              , nameNamespace = Just "\14139"+                                              , namePrefix = Just "\651"}+                                  , elementAttributes = []+                                  , elementNodes = []})}