Beispiel #1
0
 public bool BlockKnownContact(TLClient client, Contact contact, ContactRepository contactRepository)
 {
     try
     {
         TLRequestBlock req = new TLRequestBlock
         {
             Id = new TLInputUser
             {
                 UserId     = contact.Id,
                 AccessHash = contact.AccessHash
             }
         };
         var result = Task.Run(() => client.SendRequestAsync <bool>(req));
         result.Wait();
         if (result.Result)
         {
             contact.Blocked = true;
             contactRepository.UpdateContact(contact);
         }
         return(result.Result);
     }
     catch (Exception ex)
     {
         throw;
     }
 }
Beispiel #2
0
 public bool GetBlockedContacts(TLClient client, ContactRepository contactRepository)
 {
     try
     {
         bool output             = false;
         TLRequestGetBlocked req = new TLRequestGetBlocked();
         var l = Task.Run(() => client.SendRequestAsync <TLAbsBlocked>(req));
         l.Wait();
         List <TLAbsUser> list = new List <TLAbsUser>();
         var c = l.Result as TLBlocked;
         list   = c.Users.ToList();
         output = true;
         foreach (var co in list)
         {
             var     cc       = co as TLUser;
             Contact contacto = new Contact
             {
                 Phone      = string.IsNullOrEmpty(cc.Phone) ? "" : cc.Phone,
                 Id         = cc.Id,
                 FirstName  = string.IsNullOrEmpty(cc.FirstName) ? "" : cc.FirstName,
                 LastName   = string.IsNullOrEmpty(cc.LastName) ? "" : cc.LastName,
                 Username   = string.IsNullOrEmpty(cc.Username) ? "" : cc.Username,
                 Status     = cc.Status == null ? "" : cc.Status.ToString().Split('.')[2].ToString().Substring(12).ToString(),
                 AccessHash = cc.AccessHash.Value,
                 Blocked    = true
             };
             contactRepository.InsertContact(contacto);
         }
         return(output);
     }
     catch (Exception ex)
     {
         throw;
     }
 }
Beispiel #3
0
 public TLUser UpdateUsername(TLClient client, string username, UserRepository userRepository)
 {
     try
     {
         TLUser user = null;
         TLRequestUpdateUsername request = new TLRequestUpdateUsername
         {
             Username = username
         };
         var u = Task.Run(() => client.SendRequestAsync <TLUser>(request));
         u.Wait();
         user = u.Result;
         userRepository.UpdateUser(username);
         return(user);
     }
     catch (Exception ex)
     {
         throw;
     }
 }
Beispiel #4
0
 public bool Logout(TLClient client)
 {
     try
     {
         TLRequestLogOut req    = new TLRequestLogOut();
         var             result = Task.Run(() => client.SendRequestAsync <bool>(req));
         result.Wait();
         if (result.Result)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         throw;
     }
 }
Beispiel #5
0
 public bool DeleteContact(TLClient client, Contact contact, ContactRepository contactRepository)
 {
     try
     {
         TLRequestDeleteContact req = new TLRequestDeleteContact
         {
             Id = new TLInputUser
             {
                 UserId     = contact.Id,
                 AccessHash = contact.AccessHash
             }
         };
         var result = Task.Run(() => client.SendRequestAsync <object>(req));
         result.Wait();
         contactRepository.DeleteContact(contact);
         return(true);
     }
     catch (Exception ex)
     {
         throw;
     }
 }
Beispiel #6
0
 public bool CheckUsername(TLClient client, string username)
 {
     try
     {
         TLRequestCheckUsername req = new TLRequestCheckUsername
         {
             Username = username
         };
         var l = Task.Run(() => client.SendRequestAsync <bool>(req));
         l.Wait();
         if (l.Result)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         throw;
     }
 }
Beispiel #7
0
        public int ReceiveMessages(TLClient client, MessageRepository messageRepository)
        {
            TLInputPeerUser target       = null;
            bool            hayNuevos    = false;
            int             messageCount = 0;
            int             firstMessage = 0;

            try
            {
                var dialogs = GetUserDialogs(client);
                IEnumerable <TLDialog> listDialogs = dialogs.Dialogs.ToList().Where(x => (x.UnreadCount > 0));

                foreach (var dia in listDialogs)
                {
                    hayNuevos = true;
                    if (dia.Peer is TLPeerUser)
                    {
                        var peer = dia.Peer as TLPeerUser;
                        var chat = dialogs.Users.ToList().OfType <TLUser>().First(x => x.Id == peer.UserId);
                        target = new TLInputPeerUser {
                            UserId = chat.Id, AccessHash = (long)chat.AccessHash
                        };
                        var hist = GetHistory(client, target, dia);
                        if (hist is TLMessagesSlice)
                        {
                            var h       = hist as TLMessagesSlice;
                            var history = h.Messages.ToList();
                            for (var i = 0; i < history.Count; i++)
                            {
                                var mens = history[i] as TLMessage;
                                if (i == 0)
                                {
                                    firstMessage = mens.Id;
                                }
                                if (!mens.Out)
                                {
                                    Chat c = new Chat
                                    {
                                        Created = (new DateTime(1970, 1, 1)).AddSeconds((double)mens.Date).AddHours(1),
                                        FromTo  = chat.Phone,
                                        Mensaje = mens.Message,
                                        Send    = false,
                                        Seen    = false
                                    };
                                    messageRepository.InsertChat(c);
                                    messageCount++;
                                }
                            }
                        }
                        else if (hist is TLMessages)
                        {
                            var h       = hist as TLMessages;
                            var history = h.Messages.ToList();
                            for (var i = 0; i < history.Count; i++)
                            {
                                var mens = history[i] as TLMessage;
                                if (i == 0)
                                {
                                    firstMessage = mens.Id;
                                }
                                if (!mens.Out)
                                {
                                    Chat c = new Chat
                                    {
                                        Created = (new DateTime(1970, 1, 1)).AddSeconds((double)mens.Date).AddHours(1),
                                        FromTo  = chat.Phone,
                                        Mensaje = mens.Message,
                                        Send    = false,
                                        Seen    = false
                                    };
                                    messageRepository.InsertMessage(c);
                                    messageCount++;
                                }
                            }
                        }
                    }
                    if (firstMessage > 0)
                    {
                        var readed = new TeleSharp.TL.Messages.TLRequestReadHistory
                        {
                            Peer = target
                        };
                        var affectedMessages = Task.Run(() => client.SendRequestAsync <TLAffectedMessages>(readed));
                        affectedMessages.Wait();
                        var resultado = affectedMessages.Result;
                    }
                }
                return(messageCount);
            }
            catch (Exception ex)
            {
                return(-1);
            }
        }