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
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 ()
|
|
|