/// <summary> /// Parses the JSON message from Amazon SNS into the Message object. /// </summary> /// <param name="messageText">The JSON text from an Amazon SNS message</param> /// <returns>The Message object with properties set from the JSON document</returns> public static Message ParseMessage(string messageText) { var message = new Message(); var jsonData = JsonMapper.ToObject(messageText); Func<string, string> extractField = ((fieldName) => { if (jsonData[fieldName] != null && jsonData[fieldName].IsString) return (string)jsonData[fieldName]; return null; }); message.MessageId = extractField("MessageId"); message.MessageText = extractField("Message"); message.Signature = extractField("Signature"); message.SignatureVersion = extractField("SignatureVersion"); message.SigningCertURL = ValidateCertUrl(extractField("SigningCertURL")); message.SubscribeURL = extractField("SubscribeURL"); message.Subject = extractField("Subject"); message.TimestampString = extractField("Timestamp"); message.Token = extractField("Token"); message.TopicArn = extractField("TopicArn"); message.Type = extractField("Type"); message.UnsubscribeURL = extractField("UnsubscribeURL"); return message; }