Beispiel #1
0
        private static Status AlarmStatus(GmailAPI api, ILogger log)
        {
            string alarmMode   = null;
            string changedTime = null;
            string details     = null;

            List <dynamic> messages = api.ListMessages();

            foreach (dynamic message in messages)
            {
                string  messageID   = message.id;
                dynamic fullMessage = api.GetMessage(messageID);
                dynamic headers     = fullMessage.payload.headers;
                string  subject     = null;
                foreach (dynamic header in headers)
                {
                    if (header.name == "Subject")
                    {
                        subject = header.value;
                        break;
                    }
                }

                ringAlarm.TryGetValue(subject, out alarmMode);
                if (alarmMode != null)
                {
                    //string msg = JsonConvert.SerializeObject(fullMessage);
                    changedTime = Leo.MillisecondsToLocalTimeString(Convert.ToInt64(fullMessage.internalDate));
                    // Extract information from snippet
                    Match match = Regex.Match(Convert.ToString(fullMessage.snippet), @".*?(Ring\sAlarm\sin\s[A-Za-z]+\schanged\sto\s.*?)Still\shave\squestions\?");
                    details = match.Groups[1].Value;
                    break;
                }
            }
            alarmMode = alarmMode ?? "Unknown";
            return(new Status
            {
                Mode = alarmMode,
                Time = changedTime,
                Details = details
            });
        }