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;
}