Ejemplo n.º 1
0
        private void HandleLogin(object sender, LogInEventArgs login)
        {
            Trace.WriteLine(string.Format("Login: {0}, {1}, {2}", login.LoginPayload.user, login.LoginPayload.password, login.LoginPayload.legacyName));

            var connected = new Connected { user = login.LoginPayload.user };
            SendMessage(WrapperMessage.Type.TYPE_CONNECTED, connected);
        }
Ejemplo n.º 2
0
 public OscarPlugin(string host, string port)
     : base(host, port)
 {
     Config.SupportReceipts = true;
     OscarSessions = new Dictionary<string, Session>();
     LoggedIn += (sender, login) =>
         {
             var newSession = new Session(login.LoginPayload.legacyName, login.LoginPayload.password);
             OscarSessions.Add(login.LoginPayload.user, newSession);
             newSession.Messaging.MessageReceived += message =>
                 {
                     var currentUser = OscarSessions.FirstOrDefault(k => k.Value == newSession).Key;
                     if (currentUser == null) return;
                     var convMessage = new ConversationMessage
                         {
                             userName = currentUser,
                             buddyName = message.Contact.Uin,
                             message = message.Text
                         };
                     SendMessage(WrapperMessage.Type.TYPE_CONV_MESSAGE, convMessage);
                 };
             newSession.Connected += (o, args) =>
                 {
                     var currentUser = OscarSessions.FirstOrDefault(k => k.Value == newSession).Key;
                     if (currentUser == null) return;
                     var connected = new Connected {user = currentUser};
                     SendMessage(WrapperMessage.Type.TYPE_CONNECTED, connected);
                 };
             newSession.ContactList.ContactSignedOn += contact => ContactChanged(newSession, contact);
             newSession.ContactList.ContactSignedOff += contact => ContactChanged(newSession, contact);
             newSession.ContactList.ContactRemoved += contact => ContactChanged(newSession, contact);
             newSession.ContactList.ContactAdded += contact => ContactChanged(newSession, contact);
             newSession.ContactList.ContactStatusChanged += contact => ContactChanged(newSession, contact);
             newSession.ContactList.ContactListReceived +=
                 (o, args) => newSession.ContactList.Contacts.ForEach(c => ContactChanged(newSession, c));
             newSession.Connect();
         };
     LoggedOut += (sender, logout) =>
         {
             if (!OscarSessions.ContainsKey(logout.LogoutPayload.user)) return;
             OscarSessions[logout.LogoutPayload.user].Disconnect();
             OscarSessions[logout.LogoutPayload.user].Dispose();
             OscarSessions.Remove(logout.LogoutPayload.user);
         };
     ConversationMessage += (sender, message) =>
         {
             var session = OscarSessions[message.ConversationMessagePayload.userName];
             var contact = session.ContactList.Contacts.FirstOrDefault(
                 c => c.Uin.Equals(message.ConversationMessagePayload.buddyName));
             if (contact == null) return;
             /*var datetime =
                 (new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(
                     long.Parse(message.ConversationMessagePayload.timestamp));*/
             session.Messaging.Send(new Message(contact, MessageType.Outgoing,
                                                //datetime,
                                                message.ConversationMessagePayload.message));
             if (!string.IsNullOrEmpty(message.ConversationMessagePayload.id))
             {
                 var ack = new ConversationMessage
                     {
                         id = message.ConversationMessagePayload.id,
                         userName = message.ConversationMessagePayload.userName,
                         buddyName = message.ConversationMessagePayload.buddyName,
                         message = ""
                     };
                 SendMessage(WrapperMessage.Type.TYPE_CONV_MESSAGE_ACK, ack);
             }
         };
 }