|
|
|
|
-- Copyright © 2010-2012 Jon Kristensen.
|
|
|
|
|
-- Copyright 2012 Philipp Balzarek
|
|
|
|
|
-- See the LICENSE file in the
|
|
|
|
|
-- Pontarius distribution for more details.
|
|
|
|
|
|
|
|
|
|
-- |
|
|
|
|
|
-- Module: $Header$
|
|
|
|
|
-- Description: Pontarius API
|
|
|
|
|
-- Copyright: Copyright © 2010-2012 Jon Kristensen
|
|
|
|
|
-- License: Apache License 2.0
|
|
|
|
|
--
|
|
|
|
|
-- Maintainer: jon.kristensen@nejla.com
|
|
|
|
|
-- Stability: unstable
|
|
|
|
|
-- Portability: portable
|
|
|
|
|
--
|
|
|
|
|
-- XMPP is an open standard, extendable, and secure communications
|
|
|
|
|
-- protocol designed on top of XML, TLS, and SASL. Pontarius XMPP is
|
|
|
|
|
-- an XMPP client library, implementing the core capabilities of XMPP
|
|
|
|
|
-- (RFC 6120).
|
|
|
|
|
--
|
|
|
|
|
-- Developers using this library are assumed to understand how XMPP
|
|
|
|
|
-- works.
|
|
|
|
|
--
|
|
|
|
|
-- This module will be documented soon.
|
|
|
|
|
--
|
|
|
|
|
-- Note that we are not recommending anyone to use Pontarius XMPP at
|
|
|
|
|
-- this time as it's still in an experimental stage and will have its
|
|
|
|
|
-- API and data types modified frequently.
|
|
|
|
|
|
|
|
|
|
{-# LANGUAGE NoMonomorphismRestriction, OverloadedStrings #-}
|
|
|
|
|
|
|
|
|
|
module Network.XMPP
|
|
|
|
|
( module Network.XMPP.Bind
|
|
|
|
|
, module Network.XMPP.Concurrent
|
|
|
|
|
, module Network.XMPP.Monad
|
|
|
|
|
, module Network.XMPP.SASL
|
|
|
|
|
, module Network.XMPP.Session
|
|
|
|
|
, module Network.XMPP.Stream
|
|
|
|
|
, module Network.XMPP.TLS
|
|
|
|
|
, module Network.XMPP.Types
|
|
|
|
|
, module Network.XMPP.Presence
|
|
|
|
|
, module Network.XMPP.Message
|
|
|
|
|
, xmppConnect
|
|
|
|
|
, xmppNewSession
|
|
|
|
|
, connect
|
|
|
|
|
, startTLS
|
|
|
|
|
, auth
|
|
|
|
|
) where
|
|
|
|
|
|
|
|
|
|
import Data.Text as Text
|
|
|
|
|
|
|
|
|
|
import Network
|
|
|
|
|
import qualified Network.TLS as TLS
|
|
|
|
|
import Network.XMPP.Bind
|
|
|
|
|
import Network.XMPP.Concurrent
|
|
|
|
|
import Network.XMPP.Message
|
|
|
|
|
import Network.XMPP.Monad
|
|
|
|
|
import Network.XMPP.Presence
|
|
|
|
|
import Network.XMPP.SASL
|
|
|
|
|
import Network.XMPP.Session
|
|
|
|
|
import Network.XMPP.Stream
|
|
|
|
|
import Network.XMPP.TLS
|
|
|
|
|
import Network.XMPP.Types
|
|
|
|
|
|
|
|
|
|
xmppConnect :: HostName -> Text -> XMPPConMonad (Either StreamError ())
|
|
|
|
|
xmppConnect address hostname = xmppRawConnect address hostname >> xmppStartStream
|
|
|
|
|
|
|
|
|
|
xmppNewSession :: XMPPThread a -> IO (a, XMPPConState)
|
|
|
|
|
xmppNewSession = withNewSession . runThreaded
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
startTLS :: TLS.TLSParams -> XMPPThread (Either XMPPTLSError ())
|
|
|
|
|
startTLS = withConnection . xmppStartTLS
|
|
|
|
|
|
|
|
|
|
auth :: Text.Text -> Text.Text -> XMPPThread (Either String Text.Text)
|
|
|
|
|
auth username passwd = withConnection $ xmppSASL username passwd
|
|
|
|
|
|
|
|
|
|
connect :: HostName -> Text -> XMPPThread (Either StreamError ())
|
|
|
|
|
connect address hostname = withConnection $ xmppConnect address hostname
|