in Source/RulesEngine/ServiceCallItem.cs [120:256]
public static ServiceCallItem FromJson(XmlNode serviceCallNode)
{
ServiceCallItem item = new ServiceCallItem();
foreach(XmlNode propertyNode in serviceCallNode.ChildNodes)
{
try
{
//check for each service call property
if (propertyNode.Name == "Uri")
{
item.m_uri = propertyNode.InnerText;
}
else if (propertyNode.Name == "Host")
{
item.m_host = propertyNode.InnerText;
}
else if (propertyNode.Name == "XboxUserId")
{
item.m_xboxUserId = propertyNode.InnerText;
}
else if (propertyNode.Name == "MultiplayerCorrelationId")
{
item.m_multiplayerCorrelationId = propertyNode.InnerText;
}
else if (propertyNode.Name == "RequestHeaders")
{
item.m_reqHeader = propertyNode.InnerText;
}
else if (propertyNode.Name == "RequestBody")
{
item.m_reqBody = propertyNode.InnerText;
item.m_reqBodyHash = (ulong)item.m_reqBody.GetHashCode();
}
else if (propertyNode.Name == "ResponseHeaders")
{
item.m_rspHeader = propertyNode.InnerText;
}
else if (propertyNode.Name == "ResponseBody")
{
item.m_rspBody = propertyNode.InnerText;
}
else if (propertyNode.Name == "FullResponse")
{
item.m_rspFullString = propertyNode.InnerText;
}
else if (propertyNode.Name == "HttpStatusCode")
{
UInt32.TryParse(propertyNode.InnerText, out item.m_httpStatusCode);
}
else if (propertyNode.Name == "RequestBodyHashCode")
{
UInt64.TryParse(propertyNode.InnerText, out item.m_reqBodyHash);
}
else if (propertyNode.Name == "ElapsedCallTimeMs")
{
UInt64.TryParse(propertyNode.InnerText, out item.m_elapsedCallTimeMs);
}
else if (propertyNode.Name == "ReqTimeUTC")
{
double reqTimeUTC;
bool valid = double.TryParse(propertyNode.InnerText, out reqTimeUTC);
if(valid)
{
item.m_reqTimeUTC = (UInt64)BitConverter.DoubleToInt64Bits(reqTimeUTC);
}
}
else if (propertyNode.Name == "StartTimeUTC")
{
double startTimeUTC;
bool valid = double.TryParse(propertyNode.InnerText, out startTimeUTC);
if (valid)
{
item.m_startTimeUTC = (UInt64)BitConverter.DoubleToInt64Bits(startTimeUTC);
}
}
else if (propertyNode.Name == "IsGet")
{
bool.TryParse(propertyNode.InnerText, out item.m_isGet);
}
else if (propertyNode.Name == "Id")
{
UInt32.TryParse(propertyNode.InnerText, out item.m_id);
}
else if (propertyNode.Name == "IsShoulderTap")
{
bool.TryParse(propertyNode.InnerText, out item.m_isShoulderTap);
}
else if (propertyNode.Name == "ChangeNumber")
{
UInt64.TryParse(propertyNode.InnerText, out item.m_changeNumber);
}
else if (propertyNode.Name == "Branch")
{
item.m_branch = propertyNode.InnerText;
}
else if (propertyNode.Name == "SessionReferenceUriPath")
{
item.m_sessionReferenceUriPath = propertyNode.InnerText;
}
else if (propertyNode.Name == "IsInGameEvent")
{
bool.TryParse(propertyNode.InnerText, out item.m_isInGameEvent);
}
else if (propertyNode.Name == "EventName")
{
item.m_eventName = propertyNode.InnerText;
}
else if (propertyNode.Name == "EventPlayerSessionId")
{
item.m_playerSessionId = propertyNode.InnerText;
}
else if (propertyNode.Name == "EventVersion")
{
UInt16.TryParse(propertyNode.InnerText, out item.m_version);
}
else if (propertyNode.Name == "EventDimensionsData")
{
item.m_dimensions = propertyNode.InnerText;
}
else if (propertyNode.Name == "EventMeasurementsData")
{
item.m_measurements = propertyNode.InnerText;
}
else if (propertyNode.Name == "BreadCrumb")
{
item.m_breadCrumb = propertyNode.InnerText;
}
}
catch (ArgumentException)
{
}
}
return item;
}