/*
protected void SetupStream(IValidationSerializer serializer, out Stream stream, out Encoding encoding)
{
Response.ContentType = "text/xml";
// stream = Response.OutputStream;
stream = new MemoryStream();
encoding = Response.Output.Encoding;
}*/
protected byte[] Validate(long byteCount, TextReader tr, string id)
{
byte[] bytes = new byte[0];
try
{
IValidationSerializer serializer = GetSerializer();
if (serializer != null)
{
string iCalText = tr.ReadToEnd();
try
{
var ms = new MemoryStream(encoding.GetBytes(iCalText));
var ical = DDay.iCal.iCalendar.LoadFromStream(ms);
ms.Close();
}
catch (Exception e)
{
Utils.StoreExceptionBlob("Validate: " + e.Message + e.StackTrace);
bytes = ExceptionMessage(e);
return bytes;
}
if (SelectedRuleset != null)
{
serializer.Ruleset = SelectedRuleset;
RulesetValidator rulesetValidator = new RulesetValidator(ResourceManager, SelectedRuleset, iCalText);
if (rulesetValidator != null)
{
serializer.ValidationResults = rulesetValidator.Validate();
// Set the original text for the validation
serializer.ValidationResults.CalendarText = iCalText;
serializer.ValidationResults.CalendarPath = CalendarPath;
serializer.ValidationResults.ByteCount = byteCount;
}
Stream stream = new MemoryStream();
try
{
var permalink = Utils.MakePermalinkUrl(id);
serializer.Serialize(stream, encoding, permalink);
bytes = new byte[stream.Length];
stream.Seek(0, 0);
stream.Read(bytes, 0, (int)stream.Length);
}
catch (Exception e)
{
bytes = ExceptionMessage(e);
Utils.StoreExceptionBlob("Validate: " + e.Message + e.StackTrace);
}
finally
{
stream.Close();
}
}
}
}
catch (Exception e)
{
bytes = ExceptionMessage(e);
Utils.StoreExceptionBlob("Validate:" + e.Message + e.StackTrace);
}
finally
{
var results_blob = Utils.MakeResultsBlob(id);
results_blob.UploadByteArray(bytes);
}
return bytes;
}