コード例 #1
0
        /// <summary>
        /// Validates and notifies event.
        /// </summary>
        /// <param name="data">The data to be validated and notified.</param>
        /// <param name="xTeamsSignature">Signature that is notified on event.</param>
        /// <param name="encoding">Encoding of data.</param>
        /// <returns>true if the data is valid, false if the data is invalid.</returns>
        public bool ValidateAndNotify(byte[] data, string xTeamsSignature, Encoding encoding)
        {
            bool result = false;

            if (data != null && data.Length > 0 && !String.IsNullOrEmpty(xTeamsSignature) && encoding != null)
            {
                var webhookEventData = TeamsData.FromJsonString <WebhookEventData>(encoding.GetString(data));

                if (!String.IsNullOrEmpty(webhookEventData.Id))
                {
                    var notificationInfo = this.lockForDatabase.ExecuteInReaderLock <NotificationInfo>(
                        () =>
                    {
                        NotificationInfo info;

                        if (!this.notificationInfoDatabase.TryGetValue(webhookEventData.Id, out info))
                        {
                            info = null;
                        }

                        return(info);
                    });

                    if (notificationInfo != null)
                    {
                        if (notificationInfo.Validator.Validate(data, xTeamsSignature))
                        {
                            if (notificationInfo.Func != null)
                            {
                                notificationInfo.Func(webhookEventData);
                            }
                            else if (notificationInfo.FuncAsync != null)
                            {
                                notificationInfo.FuncAsync(webhookEventData);
                            }

                            result = true;
                        }
                    }
                }
            }

            return(result);
        }
コード例 #2
0
 /// <summary>
 /// Gets Errors.
 /// </summary>
 /// <returns>Errors or null.</returns>
 /// <exception cref="TeamsJsonSerializationException">Throws on serialization error.</exception>
 public ErrorData[] GetErrors()
 {
     return(TeamsData.GetErrors(this.JsonExtensionData));
 }
コード例 #3
0
 /// <summary>
 /// Get error message.
 /// </summary>
 /// <returns>Error message.</returns>
 /// <exception cref="TeamsJsonSerializationException">Throws on serialization error.</exception>
 public override string GetErrorMessage()
 {
     return(TeamsData.GetErrorMessage(this.JsonExtensionData) ?? base.GetErrorMessage());
 }