/// <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); }
/// <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)); }
/// <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()); }