You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.4 KiB

{-
This directory defines a project that illustrates how to connect, authenticate,
set a simple presence, receive message stanzas, and echo them back to whoever is
sending them, using Pontarius XMPP. This file is in the public domain.
-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad
import Data.Default
import Lens.Family2
import Network.Xmpp
import Network.Xmpp.Internal (TlsBehaviour(..))
import System.Log.Logger
main :: IO ()
main = do
updateGlobalLogger "Pontarius.Xmpp" $ setLevel DEBUG
result <- session
"test.pontarius.org"
(Just (\_ -> ( [scramSha1 "testuser1" Nothing "pwd1"])
, Nothing))
$ def & streamConfigurationL . tlsBehaviourL .~ PreferPlain
& streamConfigurationL . connectionDetailsL .~
UseHost "localhost" 5222
& onConnectionClosedL .~ reconnectSession
sess <- case result of
Right s -> return s
Left e -> error $ "XmppFailure: " ++ (show e)
sendPresence def sess
forever $ do
msg <- getMessage sess
case answerMessage msg (messagePayload msg) of
Just answer -> sendMessage answer sess >> return ()
Nothing -> putStrLn "Received message with no sender."
where
reconnectSession sess failure = reconnect' sess >> return ()