File tree Expand file tree Collapse file tree 5 files changed +1228
-729
lines changed Expand file tree Collapse file tree 5 files changed +1228
-729
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ namespace Ctor.Xmpp
2
+
3
+ open System
4
+ open System.Threading
5
+
6
+ open Microsoft.Extensions .Logging
7
+ open SharpXMPP
8
+ open SharpXMPP.XMPP
9
+
10
+ type Robot ( loggerFactory : ILoggerFactory ,
11
+ login: string,
12
+ password: string,
13
+ roomJid: string,
14
+ nickname: string) =
15
+ let logger = loggerFactory.CreateLogger< Robot>()
16
+ let connection = new XmppClient( JID( login), password)
17
+
18
+ let connectionFailedHandler = XmppConnection.ConnectionFailedHandler( fun s e ->
19
+ logger.LogError( e.ToString())
20
+ Thread.Sleep( TimeSpan.FromSeconds( 30.0 )) // TODO[Friedrich]: Configurable timeout.
21
+ ())
22
+
23
+ let signedInHandler = XmppConnection.SignedInHandler( fun s e ->
24
+ logger.LogInformation( " Connecting to " + roomJid)
25
+ SharpXmppHelper.joinRoom connection roomJid nickname)
26
+
27
+ let messageHandler = XmppConnection.MessageHandler( fun s e ->
28
+ logger.LogInformation( " <-" + e.ToString()))
29
+
30
+ let elementHandler = XmppConnection.ElementHandler( fun s e ->
31
+ let arrow = if e.IsInput then " <-" else " ->"
32
+ logger.LogInformation( arrow + " " + e.ToString()))
33
+
34
+ do
35
+ connection.add_ ConnectionFailed( connectionFailedHandler)
36
+ connection.add_ SignedIn( signedInHandler)
37
+ connection.add_ Message( messageHandler)
38
+ connection.add_ Element( elementHandler)
39
+
40
+ interface IDisposable with
41
+ member __.Dispose () = connection.Close()
Original file line number Diff line number Diff line change
1
+ module Ctor.Xmpp.SharpXmppHelper
2
+
3
+ open System.Xml .Linq
4
+
5
+ open SharpXMPP
6
+ open SharpXMPP.XMPP .Client .MUC .Bookmarks .Elements
7
+
8
+ let private bookmark ( roomJid : string ) ( nickname : string ): BookmarkedConference =
9
+ let room = BookmarkedConference()
10
+ room.SetAttributeValue( XName.Get( " jid" ), roomJid)
11
+ let nickElement = XElement( XName.Get( " storage:bookmarks" ), " nick" , Value = nickname)
12
+ room.Add( nickElement)
13
+ room
14
+
15
+ let joinRoom ( client : XmppClient ) ( roomJid : string ) ( nickname : string ): unit =
16
+ let room = bookmark roomJid nickname
17
+ client.BookmarkManager.Join( room)
Original file line number Diff line number Diff line change 5
5
"compilerName" : " fsc" ,
6
6
"compile" : {
7
7
"includeFiles" : [
8
- " Program.fs"
8
+ " SharpXmppHelper.fs" ,
9
+ " Robot.fs"
9
10
]
10
11
},
11
12
"preserveCompilationContext" : true
14
15
"netcoreapp1.0" : {}
15
16
},
16
17
"dependencies" : {
18
+ "Microsoft.Extensions.Logging" : " 1.1.0" ,
19
+ "Microsoft.FSharp.Core.netcore" : " 1.0.0-alpha-160629" ,
17
20
"Microsoft.NETCore.App" : {
18
21
"type" : " platform" ,
19
22
"version" : " 1.0.1"
20
23
},
21
- "Microsoft.FSharp.Core.netcore " : " 1. 0.0-alpha-160629 "
24
+ "SharpXMPP.Shared " : " 0.0.1-pre01 "
22
25
},
23
26
"tools" : {
24
27
"dotnet-compile-fsc" : " 1.0.0-preview2-*"
You can’t perform that action at this time.
0 commit comments