private static string CreateTriggerBody(string buildConfigId, int? agentId, List<Property> properties = null, MoreOptionsHavingBuilder moreOptions = null)
{
var bodyBuilder = new StringBuilder();
if (moreOptions != null &&
moreOptions.TriggeringOptions.Personal == true)
{
bodyBuilder.Append(@"<build personal=""true"">").AppendLine();
}
else
{
bodyBuilder.Append(@"<build>").AppendLine();
}
bodyBuilder.AppendFormat(@"<buildType id=""{0}""/>", buildConfigId).AppendLine();
if (agentId.HasValue)
{
bodyBuilder.AppendFormat(@"<agent id=""{0}""/>", agentId).AppendLine();
}
if (moreOptions != null &&
moreOptions.GetComment() != null)
{
var encodedName = SecurityElement.Escape(moreOptions.GetComment());
bodyBuilder.AppendFormat(@"<comment><text>{0}</text></comment>", encodedName).AppendLine();
}
if (moreOptions != null &&
(moreOptions.TriggeringOptions.CleanSources == true ||
moreOptions.TriggeringOptions.QueueAtTop == true ||
moreOptions.TriggeringOptions.RebuildAllDependencies == true))
{
bodyBuilder.Append(@"<triggeringOptions ");
if (moreOptions.TriggeringOptions.CleanSources == true)
bodyBuilder.Append(@"cleanSources=""true"" ");
if (moreOptions.TriggeringOptions.RebuildAllDependencies == true)
bodyBuilder.Append(@"rebuildAllDependencies=""true"" ");
if (moreOptions.TriggeringOptions.QueueAtTop == true)
bodyBuilder.Append(@"queueAtTop=""true"" ");
bodyBuilder.Append(@"/>").AppendLine();
}
if (properties != null && properties.Any())
{
bodyBuilder.Append(@"<properties>").AppendLine();
foreach (var property in properties)
{
bodyBuilder.AppendFormat(@"<property name=""{0}"" value=""{1}""", property.Name, property.Value);
if (property.Type != null && !string.IsNullOrEmpty(property.Type.RawValue))
{
bodyBuilder.Append(">").AppendLine();
bodyBuilder.AppendFormat(@"<type rawValue=""{0}""/>", property.Type.RawValue).AppendLine();
bodyBuilder.Append("</property>").AppendLine();
}
else
{
bodyBuilder.Append("/>").AppendLine();
}
}
bodyBuilder.Append(@"</properties>").AppendLine();
}
bodyBuilder.Append("</build>").AppendLine();
return bodyBuilder.ToString();
}