public void Run(Document doc)
        {
            LogTrace($"Run called with {doc.DisplayName}");

            try
            {
                using (new HeartBeat())
                {
                    Parameters parameters;
                    switch (doc.DocumentType)
                    {
                    case DocumentTypeEnum.kPartDocumentObject:
                        parameters = ((PartDocument)doc).ComponentDefinition.Parameters;
                        break;

                    case DocumentTypeEnum.kAssemblyDocumentObject:
                        parameters = ((AssemblyDocument)doc).ComponentDefinition.Parameters;
                        break;

                    default:
                        LogError($"Unsupported document type: {doc.DocumentType}");
                        return;
                    }

                    var paramsExtractor = new ParametersExtractor();
                    paramsExtractor.Extract(doc, parameters);
                }
            }
            catch (Exception e)
            {
                LogError("Processing failed. " + e.ToString());
            }
        }
        public void GenerateQueryString_ShouldThrowWhenRequiredParameterIsNull()
        {
            // Arrange
            var request = new RequestWithRequiredParameter();

            // Act
            var ex = Assert.Throws <Exception>(() => ParametersExtractor.GenerateQueryString(request));

            // Assert
            Assert.Equal("Parameter string is required.", ex.Message);
        }
        public void GenerateQueryString_ShouldNotIncludeNulls()
        {
            // Arrange
            var request = new RequestWithNullables();

            // Act
            var queryString = ParametersExtractor.GenerateQueryString(request);

            // Assert
            Assert.Equal("", queryString);
        }
        public void GenerateQueryString_ShouldUseCustomName()
        {
            // Arrange
            var request = new RequestWithCustomName
            {
                String = "test"
            };

            // Act
            var queryString = ParametersExtractor.GenerateQueryString(request);

            // Assert
            Assert.Equal("custom_name=test", queryString);
        }
示例#5
0
        public async Task <CreateResponse> Create(string baseUrl, string secret, CreateRequest request, Modules modules = null)
        {
            HttpContent body = null;

            if (modules != null)
            {
                using var stringWriter = new StringWriter();
                var ser = new XmlSerializer(typeof(Modules));
                ser.Serialize(stringWriter, modules);
                body = new StringContent(stringWriter.ToString(), Encoding.UTF8, "application/xml");
            }

            return(await ExecuteRequest <CreateResponse>(baseUrl, secret, "create",
                                                         ParametersExtractor.GenerateQueryString(request), body));
        }
        public void GenerateQueryString_ShouldGenerateQueryStringWithCamelCaseParameters()
        {
            // Arrange
            var request = new Request
            {
                String  = "test",
                Int     = 10,
                Boolean = true
            };

            // Act
            var queryString = ParametersExtractor.GenerateQueryString(request);

            // Assert
            Assert.Equal("string=test&int=10&boolean=True", queryString);
        }
示例#7
0
        public async Task ExtractParameters()
        {
            var parametersExtractor = new ParametersExtractor();
            var expectedParameters  = new ProcessParameters(
                processPath: @"P:\Program Files (x86)\SteamLibrary\steamapps\common\Arma 3\arma3server_x64.exe",
                client: false,
                port: 2302,
                serverCfgPath: @"P:\Program Files (x86)\SteamLibrary\steamapps\common\Arma 3\serverConfig\modsetConfig\_Test\server.cfg",
                basicCfgPath: @"P:\Program Files (x86)\SteamLibrary\steamapps\common\Arma 3\serverConfig\modsetConfig\_Test\basic.cfg",
                profilePath: @"P:\Program Files (x86)\SteamLibrary\steamapps\common\Arma 3\serverConfig\modsetConfig\_Test\profiles\Server",
                name: "server",
                modsetName: "_Test",
                startTime: new DateTimeOffset(2021, 11, 25, 22, 04, 00, offset: TimeSpan.FromHours(1)),
                filePatching: true,
                netLog: true,
                fpsLimit: 100,
                loadMissionToMemory: true);

            var extractParametersResult = await parametersExtractor.ExtractParameters(Parameters);

            extractParametersResult.ShouldBeSuccess(expectedParameters);
        }
示例#8
0
        private static void Main()
        {
            var user = new User(true);

            var paramters = new ParametersExtractor <User>(user)
                            .ExtractAs("UserName", x => x.Name)
                            .ExtractAs("ActiveMessage", GetMessage)
                            .ExtractAs("UserAge", x => x.Age)
                            .Extract(x => x.BirthDate, x => x.BirthDate.Year)
                            .ExtractAs("UserRole", x => x.Role.Name.ToUpper())
                            .Extract(x => x.Role.Level)
                            .Extract(x => x.Active, onTrue: _ => "+")
                            .ExtractAsValue(x => x.Name, "Виктор")
                            .Result();

            foreach (var parameter in paramters)
            {
                Console.WriteLine($"{parameter.Key}: {parameter.Value}");
            }

            Console.ReadKey();
        }
示例#9
0
 public async Task <GetRecordingsResponse> GetRecordings(string baseUrl, string secret, GetRecordingsRequest request)
 => await ExecuteRequest <GetRecordingsResponse>(baseUrl, secret, "getRecordings",
                                                 ParametersExtractor.GenerateQueryString(request));
示例#10
0
 public string GetJoinUrl(string baseUrl, string secret, JoinRequest request)
 => ConstructUrl(baseUrl, secret, "join", ParametersExtractor.GenerateQueryString(request));
示例#11
0
        public void RunWithArguments(Document doc, NameValueMap map)
        {
            LogTrace($"RunWithArguments called with {doc.DisplayName} with {map.Count} arguments");

            using (new HeartBeat())
            {
                Parameters parameters;
                switch (doc.DocumentType)
                {
                case DocumentTypeEnum.kPartDocumentObject:
                    parameters = ((PartDocument)doc).ComponentDefinition.Parameters;
                    break;

                case DocumentTypeEnum.kAssemblyDocumentObject:
                    parameters = ((AssemblyDocument)doc).ComponentDefinition.Parameters;
                    break;

                default:
                    LogError($"Unsupported document type: {doc.DocumentType}");
                    return;
                }

                LogTrace("Read parameters");

                string paramFile = (string)map.Value["_1"];
                string json      = System.IO.File.ReadAllText(paramFile);
                LogTrace(json);

                var incomingParams = JsonConvert.DeserializeObject <InventorParameters>(json);

                bool changed = false;

                foreach (var pair in incomingParams)
                {
                    string            paramName = pair.Key;
                    InventorParameter paramData = pair.Value;

                    try
                    {
                        var userParameter = parameters[paramName];

                        string expression = userParameter.Expression;
                        if (!paramData.Value.Equals(expression))
                        {
                            LogTrace($"Applying '{paramData.Value}' to '{paramName}'");
                            SetExpression(userParameter, paramData, doc);
                            changed = true;
                            if (paramData.ErrorMessage != null)
                            {
                                // there was an invalid expression the UI will prompt the user to fix, so don't bother changing the rest of the parameters
                                LogTrace("Skip update for the remaining parameters");
                                break;
                            }
                        }
                        else
                        {
                            LogTrace($"Skipping '{paramName}'");
                        }
                    }
                    catch (Exception e)
                    {
                        // some parameters (maybe when parameter gets driven by iLogic rule) are throwing error on change.
                        // so swallow the thrown error, log about it and continue
                        LogError($"Failed to set '{paramName}' parameter. Error is {e}.");
                    }
                }

                var paramsExtractor = new ParametersExtractor();
                paramsExtractor.Extract(doc, parameters, incomingParams);
            }
        }