Exemplo n.º 1
0
        /// <summary>
        /// Poll ongoing chat for info and any events occuring since last call to poll, <see cref="Cafex.LiveAssist.Bot.ChatInfo"/>
        /// </summary>
        /// <param name="chatContext">Reference to specific chat to poll</param>
        /// <returns>An instance of <c>ChatInfo</c></returns>
        public async Task <ChatInfo> Poll(ChatContext chatContext)
        {
            if (chatContext != null)
            {
                LPEvent chatEvent = await PollEvents(chatContext);

                if (chatEvent != null && chatEvent.chat.link != null)
                {
                    foreach (Link link in chatEvent.chat.link)
                    {
                        if (link.rel.Equals("next"))
                        {
                            chatContext.NextEvents = RepairUri(link.href).AbsoluteUri;
                        }
                    }
                }
                else
                {
                    return(null);
                }
                return(chatEvent.getChatInfo());
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 2
0
        internal async Task <LPEvent> PollEvents(ChatContext chatContext)
        {
            LPEvent chatEvent = null;

            if (client != null && chatContext.NextEvents != null)
            {
                HttpResponseMessage response = await client.GetAsync(chatContext.NextEvents);

                if (response.IsSuccessStatusCode)
                {
                    string content = await response.Content.ReadAsStringAsync();

                    chatEvent = JsonConvert.DeserializeObject <LPEvent>(content);
                    response.Dispose();
                }
                else
                {
                    response.Dispose();
                    throw new ChatException($"Failed to poll events, received HTTP response code {response.StatusCode} from chat server");
                }
            }
            else
            {
                return(null);
            }
            return(chatEvent);
        }