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); }
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); }
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); }
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(); }
public async Task <GetRecordingsResponse> GetRecordings(string baseUrl, string secret, GetRecordingsRequest request) => await ExecuteRequest <GetRecordingsResponse>(baseUrl, secret, "getRecordings", ParametersExtractor.GenerateQueryString(request));
public string GetJoinUrl(string baseUrl, string secret, JoinRequest request) => ConstructUrl(baseUrl, secret, "join", ParametersExtractor.GenerateQueryString(request));
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); } }