예제 #1
0
        private static UserData ToUser(Dictionary <string, object> userD)
        {
            var user = new UserData();

            try
            {
                if (userD.ContainsKey("Fingerprint"))
                {
                    user.Fingerprint = userD["Fingerprint"] as string;
                }

                if (userD.ContainsKey("UserName"))
                {
                    user.UserName = userD["UserName"] as string;
                }
            }
            catch (Exception exception)
            {
                var exp  = new InvalidOperationException("Unable to parse user data part.", exception);
                var data = Issue.Register(exp);
                throw exp.AddData("IssueInstanceTicket", data.IssueInstanceTicket).AddData("IssueTypeTicket", data.IssueTypeTicket);
            }

            return(user);
        }
예제 #2
0
        public static Tharga.Quilt4Net.DataTransfer.Session ToSession(Dictionary <string, object> sessionD)
        {
            var session = new Tharga.Quilt4Net.DataTransfer.Session();

            try
            {
                if (sessionD.ContainsKey("SessionGuid"))
                {
                    Guid sessionGuid;
                    if (Guid.TryParse(sessionD["SessionGuid"] as string, out sessionGuid))
                    {
                        session.SessionGuid = sessionGuid;
                    }
                }

                if (sessionD.ContainsKey("ClientStartTime"))
                {
                    DateTime clientStartTime;
                    if (DateTime.TryParse(sessionD["ClientStartTime"] as string, out clientStartTime))
                    {
                        session.ClientStartTime = clientStartTime;
                    }
                }

                if (sessionD.ContainsKey("ClientToken"))
                {
                    session.ClientToken = sessionD["ClientToken"] as string;
                    if (sessionD.ContainsKey("Environment"))
                    {
                        session.Environment = sessionD["Environment"] as string;
                    }
                }

                if (sessionD.ContainsKey("Application"))
                {
                    var applicationD = sessionD["Application"] as dynamic;
                    session.Application = ToApplication(applicationD);
                }

                if (sessionD.ContainsKey("Machine"))
                {
                    var machineD = sessionD["Machine"] as dynamic;
                    session.Machine = ToMachine(machineD);
                }

                if (sessionD.ContainsKey("User"))
                {
                    var userD = sessionD["User"] as dynamic;
                    session.User = ToUser(userD);
                }
            }
            catch (Exception exception)
            {
                var exp  = new InvalidOperationException("Unable to parse session data part.", exception);
                var data = Issue.Register(exp);
                throw exp.AddData("IssueInstanceTicket", data.IssueInstanceTicket).AddData("IssueTypeTicket", data.IssueTypeTicket);
            }

            return(session);
        }
예제 #3
0
        /// <summary>
        /// Guards against an invalid operation. The operation is invalid if the condition evaluates to <c>True</c> . Will
        /// throw an <see cref="InvalidOperationException">InvalidOperationException</see> .
        /// </summary>
        /// <param name="operationInvalid">A boolean condition, which if <c>true</c> , indicates if the operation is invalid.</param>
        /// <param name="exceptionMessage">
        /// (Optional) Custom error message. A specific error message that can be used to describe
        /// the exception in more detail than the default message.
        /// </param>
        /// <param name="additionalData">(Optional) Additional information to add to the Data property of the thrown exception.</param>
        /// <exception cref="InvalidOperationException">Will be thrown when <c>operationInvalid</c> is evaluates to <c>true</c> .</exception>
        /// <example>
        ///     <code>
        /// public void Start()
        /// {
        ///     GuardAgainst.OperationBeingInvalid(_started), nameof(myArgument));
        ///
        ///     // Remaining code omitted.
        /// }
        /// </code>
        /// </example>
        public static void OperationBeingInvalid(bool operationInvalid,
                                                 string exceptionMessage = null,
                                                 IDictionary <object, object> additionalData = default)
        {
            if (!operationInvalid)
            {
                return;
            }

            var ex = new InvalidOperationException(exceptionMessage.ToNullIfWhitespace());

            ex.AddData(additionalData);
            throw ex;
        }
예제 #4
0
        private static ApplicationData ToApplication(Dictionary <string, object> applicationD)
        {
            var application = new ApplicationData();

            try
            {
                if (applicationD.ContainsKey("Fingerprint"))
                {
                    application.Fingerprint = applicationD["Fingerprint"] as string;
                }

                if (applicationD.ContainsKey("Name"))
                {
                    application.Name = applicationD["Name"] as string;
                }

                if (applicationD.ContainsKey("SupportToolkitNameVersion"))
                {
                    application.SupportToolkitNameVersion = applicationD["SupportToolkitNameVersion"] as string;
                }

                if (applicationD.ContainsKey("Version"))
                {
                    application.Version = applicationD["Version"] as string;
                }

                if (applicationD.ContainsKey("BuildTime"))
                {
                    DateTime buildTime;
                    if (DateTime.TryParse(applicationD["BuildTime"] as string, out buildTime))
                    {
                        application.BuildTime = buildTime;
                    }
                }
            }
            catch (Exception exception)
            {
                var exp  = new InvalidOperationException("Unable to parse application data part.", exception);
                var data = Issue.Register(exp);
                throw exp.AddData("IssueInstanceTicket", data.IssueInstanceTicket).AddData("IssueTypeTicket", data.IssueTypeTicket);
            }

            return(application);
        }
예제 #5
0
        private static MachineData ToMachine(Dictionary <string, object> machineD)
        {
            var machine = new MachineData();

            try
            {
                machine.Fingerprint = machineD["Fingerprint"] as string;
                machine.Name        = machineD["Name"] as string;

                if (machineD.ContainsKey("Data"))
                {
                    machine.Data = ToDictionary(machineD["Data"]);
                }
                else
                {
                    machine.Data = new Dictionary <string, string>();
                }

                if (!machine.Data.ContainsKey("OsName") && machineD.ContainsKey("OsName"))
                {
                    var osName = machineD["OsName"] as string;
                    if (!string.IsNullOrEmpty(osName))
                    {
                        machine.Data.Add("OsName", osName);
                    }
                }
            }
            catch (Exception exception)
            {
                var exp  = new InvalidOperationException("Unable to parse machine data part.", exception);
                var data = Issue.Register(exp);
                throw exp.AddData("IssueInstanceTicket", data.IssueInstanceTicket).AddData("IssueTypeTicket", data.IssueTypeTicket);
            }

            return(machine);
        }