public static ServiceCallItem FromJson()

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