Exemple #1
0
        private void StoreRoboConfig(RoboConfig config)
        {
            db.RoboConfig.RemoveRange(db.RoboConfig);
            db.SaveChanges();

            db.RoboConfig.Add(config);
            db.SaveChanges();
        }
Exemple #2
0
        public async Task <ActionResponseMessage> SetRoboConfigAsync(string robotName, string robotSerial, string email, string password, string ipOverride = null)
        {
            try
            {
                var roboConfig = new RoboConfig()
                {
                    RobotName     = robotName,
                    RobotSerial   = robotSerial,
                    Email         = email,
                    Password      = password,
                    IpOverrideStr = string.IsNullOrWhiteSpace(ipOverride) ? ipOverride : null
                };

                StoreRoboConfig(roboConfig); // store an early version with entered details

                // validations
                var validations = new List <string>();
                if (!Authentication.SerialNumberIsValid(robotSerial))
                {
                    validations.Add("Serial number invalid.");
                }
                if (!Authentication.RobotNameIsValid(robotName))
                {
                    validations.Add("Robot name invalid.");
                }
                if (validations.Count > 0)
                {
                    return(ActionResponseMessage.Failure(validations));
                }

                IPAddress ipAddressOverride = null;
                if (!string.IsNullOrWhiteSpace(ipOverride))
                {
                    IPAddress.TryParse(ipOverride, out ipAddressOverride);
                }

                var loginResult = await Authentication.Login(robotSerial, robotName, email, password, ipAddressOverride);

                roboConfig.RobotName     = loginResult.RobotName;
                roboConfig.RobotGuid     = loginResult.Guid;
                roboConfig.RobotCert     = loginResult.Certificate;
                roboConfig.IpOverrideStr = ipAddressOverride?.ToString();

                StoreRoboConfig(roboConfig); // store final version with cert and guid

                // if all else has succeeded, now reconnect to the robot
                return(await ReconnectAsync());
            }
            catch (VectorAuthenticationException ex)
            {
                return(ActionResponseMessage.Failure(ex));
            }
        }