content: {-
  
  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 ()
  