Ejemplo n.º 1
0
        public void GetAllChatReferences()
        {
            IList <Chat>                    chatReferences;
            IList <ChatMessage>             messageReference;
            IList <ConversationMember>      memberReference;
            GraphServiceClient              client   = new GraphServiceClient(Authentication.GetCredentialProvider());
            Task <IUserChatsCollectionPage> chatPage = client.Me.Chats.Request().GetAsync();

            chatPage.Wait();
            while (true)
            {
                IUserChatsCollectionPage chats = chatPage.Result;
                chatReferences = chats.CurrentPage;
                foreach (Chat chat in chatReferences)
                {
                    Task <IChatMessagesCollectionPage> chatMessagePage = client.Chats[chat.Id].Messages.Request().GetAsync();
                    chatMessagePage.Wait();
                    List <MessageDetail> messageDetailList = new List <MessageDetail>();
                    while (true)
                    {
                        IChatMessagesCollectionPage messages = chatMessagePage.Result;
                        messageReference = messages.CurrentPage;
                        foreach (ChatMessage message in messageReference)
                        {
                            MessageDetail detail = new MessageDetail();
                            detail.Body = message.Body.Content;
                            detail.From = message.From.User.DisplayName;
                            messageDetailList.Add(detail);
                        }
                        if (messageReference.Count == 0)
                        {
                            break;
                        }
                        chatMessagePage = messages.NextPageRequest.GetAsync();
                        chatMessagePage.Wait();
                    }

                    Task <IChatMembersCollectionPage> chatMemberPage = client.Chats[chat.Id].Members.Request().GetAsync();
                    chatMemberPage.Wait();
                    IChatMembersCollectionPage members = chatMemberPage.Result;
                    memberReference = members.CurrentPage;
                    List <string> memberList = GetMembers(memberReference);
                    if (memberList.Count > 0 && messageDetailList.Count > 0)
                    {
                        Console.WriteLine("Chat between " + DisplayMembers(memberList));
                        foreach (MessageDetail detail in messageDetailList)
                        {
                            Console.WriteLine(detail.From + ": " + detail.Body);
                        }
                    }
                }
                if (chats.NextPageRequest == null)
                {
                    break;
                }
                chatPage = chats.NextPageRequest.GetAsync();
                chatPage.Wait();
            }
        }
 private async Task Process(Credential creds, Guid sourceId, IUserChatsCollectionPage userChatsCollectionPage)
 {
     foreach (var chat in userChatsCollectionPage)
     {
         var received = Events.Topic.From(chat);
         var existing = _store.GetTopic(sourceId, received.Id);
         if (existing == null)
         {
             _store.Add(sourceId, received);
         }
         await _events.Sync(creds, sourceId, received, existing, received.LastUpdated.ToUnixTimeMilliseconds());
     }
 }