aliyun-net-sdk-dybaseapi/Dybaseapi/MNS/Internal/ResponseValidationHandler.cs (59 lines of code) (raw):

using System; using System.Globalization; using System.Text; using Aliyun.Acs.Dybaseapi.MNS.Model; using Aliyun.Acs.Dybaseapi.MNS.Runtime.Pipeline; using Aliyun.Acs.Dybaseapi.MNS.Runtime.Pipeline.Handlers; using Aliyun.Acs.Dybaseapi.MNS.Util; namespace Aliyun.Acs.Dybaseapi.MNS.Internal { /// <summary> /// This handler validates response returned by MNS. /// </summary> internal class ResponseValidationHandler : GenericHandler { /// <summary> /// Validates the response returned by MNS. /// </summary> /// <param name="executionContext">The execution context which contains both the /// requests and response context.</param> protected override void PostInvoke(IExecutionContext executionContext) { return; /* var request = executionContext.RequestContext.Request; var response = executionContext.ResponseContext.Response; ReceiveMessageResponse receiveMessageResponse = response as ReceiveMessageResponse; if (receiveMessageResponse != null) { ValidateReceiveMessage(receiveMessageResponse); } SendMessageResponse sendMessageResponse = response as SendMessageResponse; SendMessageRequest sendMessageRequest = request.OriginalRequest as SendMessageRequest; if (sendMessageRequest != null && sendMessageResponse != null) { ValidateSendMessage(sendMessageRequest, sendMessageResponse); } */ } public static string CalculateMD5(string message) { var messageBytes = Encoding.UTF8.GetBytes(message); return CalculateMD5(messageBytes); } public static string CalculateMD5(byte[] bytes) { var md5Hash = CryptoUtilFactory.CryptoInstance.ComputeMD5Hash(bytes); var calculatedMd5 = BitConverter.ToString(md5Hash).Replace("-", string.Empty).ToLower(CultureInfo.InvariantCulture); return calculatedMd5; } public static bool CompareMD5(string message, string md5FromService) { var calculatedMd5 = CalculateMD5(message); return (string.Equals(calculatedMd5, md5FromService, StringComparison.OrdinalIgnoreCase)); } public static void ValidateMD5(string message, string md5FromService) { if (!CompareMD5(message, md5FromService)) throw new MD5ValidateException("MD5 hash mismatch"); } public static void ValidateMD5(string message, string messageId, string md5FromService) { if (!CompareMD5(message, md5FromService)) throw new MD5ValidateException(string.Format(CultureInfo.InvariantCulture, "MD5 hash mismatch for message id {0}", messageId)); } public static void ValidateMD5(string message, string messageId, string md5FromService, string receiptHandle) { if (!CompareMD5(message, md5FromService)) throw new MD5ValidateException(string.Format(CultureInfo.InvariantCulture, "MD5 hash mismatch for message id {0}", messageId), receiptHandle); } public static void ValidateMD5(Message message) { ValidateMD5(message.Body, message.Id, message.BodyMD5, message.ReceiptHandle); } public static void ValidateReceiveMessage(ReceiveMessageResponse response) { if (response != null && response.Message != null) { ValidateMD5(response.Message); } } } }