public void addVirtualArticleMapping(string data)
{
tmWebServices.VirtualArticle_GetCurrentMappings(); // will trigger an authorization check if needed
try
{
Action <VirtualArticleAction> outputVirtualArticleActionAsXml =
(virtualArticleAction) => {
context.Response.ContentType = "text/xml";
var xml = virtualArticleAction.serialize(false);
context.Response.Write(xml);
endResponse();
};
var mappings = data.split(",");
if (mappings.size() == 2)
{
var guid1 = mappings[0].guid(); //will throw exception if guid not valid
if (guid1 != Guid.Empty)
{
if (mappings[1].isGuid()) // VIRTUAL ID
{
var guid2 = mappings[1].guid();
if (guid2 != Guid.Empty)
{
var virtualArticleAction = tmWebServices.VirtualArticle_Add_Mapping_VirtualId(guid1, guid2);
outputVirtualArticleActionAsXml(virtualArticleAction);
}
}
else
{
var redirectUrl = "http://{0}/article/{1}".format(mappings[1], guid1);
var virtualArticleAction = tmWebServices.VirtualArticle_Add_Mapping_Redirect(guid1, redirectUrl);
outputVirtualArticleActionAsXml(virtualArticleAction);
}
}
}
else if (mappings.size() == 3)
{
var guid1 = mappings[0].guid();
if (mappings[2].isGuid()) // EXTERNAL ARTICLE
{
var tmServer = mappings[1].uri();
var guid2 = mappings[2].guid();
if (guid1 != Guid.Empty && guid2 != Guid.Empty && tmServer.notNull())
{
var virtualArticleAction = tmWebServices.VirtualArticle_Add_Mapping_ExternalArticle(guid1, tmServer.str(), guid2);
outputVirtualArticleActionAsXml(virtualArticleAction);
}
}
else // EXTERNAL SERVICE
{
var service = mappings[1];
var serviceData = mappings[2];
var virtualArticleAction = tmWebServices.VirtualArticle_Add_Mapping_ExternalService(guid1, service, serviceData);
outputVirtualArticleActionAsXml(virtualArticleAction);
}
}
}
catch (Exception ex)
{
ex.log();
}
}