예제 #1
0
        /// <summary>
        /// Get JSON with last conversation(s)
        /// </summary>
        /// <param name="fanpage">Fanpage object</param>
        /// <param name="limitation">Is set limit = 1, to returned JSON</param>
        /// <returns>JSON as string</returns>
        private async Task <string> GetLastConversationJsonAsync(Fanpage fanpage, bool limitation = true)
        {
            string limit = limitation ? "&limit=1" : "";

            var response = await client.GetAsync($"{BASE_URL}{fanpage.Id}{CONVERSATIONS_PATH}?access_token={fanpage.Token}{limit}");

            return(await response.Content.ReadAsStringAsync());
        }
예제 #2
0
        public MainWindow()
        {
            fanpage       = new Fanpage(config["fanpageid"], config["token"]);
            conversations = new Conversations();

            InitializeComponent();
            LastRefreshTSLabel.Content = "None";
            FanpageIDLabel.Content     = config["fanpageid"];
        }
예제 #3
0
        /// <summary>
        /// Run method periodily
        /// </summary>
        /// <param name="fanpage"></param>
        /// <param name="firstWaiting"></param>
        /// <param name="period"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        private async Task RunCheckingTaskAsync(Fanpage fanpage, TimeSpan firstWaiting, TimeSpan period, CancellationToken token)
        {
            if (firstWaiting > TimeSpan.Zero)
            {
                await Task.Delay(firstWaiting, token);
            }

            while (!token.IsCancellationRequested)
            {
                await CheckNewMessageComes(fanpage);

                if (period > TimeSpan.Zero)
                {
                    await Task.Delay(period, token);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Check is newer message. If is, return true and save new DateTime into "lastConversationDateTime"
        /// </summary>
        /// <param name="fanpage">Fanpage object</param>
        /// <returns>boolean</returns>
        public async Task <bool> IsNewMessage(Fanpage fanpage)
        {
            string json = await GetLastConversationJsonAsync(fanpage);

            JObject jObject = JObject.Parse(json);

            {
                var jObjectError = jObject["error"];

                if (jObjectError != null)
                {
                    string errorType    = jObjectError["type"]?.ToString();
                    string errorMessage = jObjectError["message"]?.ToString();
                    MessageBox.Show(errorMessage);

                    Errors error = new Errors(errorType, errorMessage, errorList.Count);
                    errorList.Add(error);
                    await Errors.WriteErrorAsync(error);

                    return(false);
                }
            }

            string   lastConversationTimeStampString = jObject["data"][0]["updated_time"]?.ToString();
            DateTime?dateTime = await StringToDatetime(lastConversationTimeStampString);

            if (dateTime == null)
            {
                return(false);
            }

            if (lastConversationDateTime >= dateTime)
            {
                return(false);
            }

            lastConversationDateTime = (DateTime)dateTime;

            return(true);
        }
예제 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fanpage"></param>
        /// <returns></returns>
        private async Task CheckNewMessageComes(Fanpage fanpage)
        {
            if (wasNewMessageConfirmed)
            {
                bool isNewMessage = await conversations.IsNewMessage(fanpage);

                if (isNewMessage)
                {
                    wasNewMessageConfirmed = false;
                }

                await ConversationsInfo(isNewMessage);

                TSLabel.Content            = conversations.lastConversationDateTime.ToString();
                LastRefreshTSLabel.Content = DateTime.Now.ToString();
            }
            else
            {
                InfosErrorsLabel.Content = "Last message wasn't confirmed. REFRESH ISN'T POSSIBLE!";
                await Task.Delay(3000);
            }

            InfosErrorsLabel.Content = "No infos";
        }