public static void Main(string[] args) { try { // Build Vault Engine calculation parameters var componentsApi = new ComponentsApi(GetEngineApiConfiguration()); var componentsResponse = componentsApi.GetVaultComponentsWithHttpInfo(VaultDefaultDocument); var vaultComponentId = componentsResponse.Data.FirstOrDefault(component => (component.Value.Name == VaultComponentName && component.Value.Category == VaultComponentCategory)) .Key; Console.WriteLine($"Vault Component Id : {vaultComponentId}"); var vaultAccount = new VaultIdentifier(VaultDefaultAccount); var vaultDates = new VaultDateParameters(VaultStartDate, VaultEndDate, VaultFrequency); var configurationApi = new ConfigurationsApi(GetEngineApiConfiguration()); var configurationResponse = configurationApi.GetVaultConfigurationsWithHttpInfo(vaultAccount.Id); var vaultConfiguration = configurationResponse.Data.First().Key; var vaultCalculation = new VaultCalculationParameters(vaultComponentId, vaultAccount, vaultDates, vaultConfiguration); var calculationApi = new VaultCalculationsApi(GetEngineApiConfiguration()); var runCalculationResponse = calculationApi.RunVaultCalculationWithHttpInfo(vaultCalculation); var calculationId = string.Empty; while (runCalculationResponse.StatusCode == HttpStatusCode.Accepted) { if (string.IsNullOrWhiteSpace(calculationId)) { runCalculationResponse.Headers.TryGetValue("Location", out var location); calculationId = location?[0].Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Last(); } if (runCalculationResponse.Headers.ContainsKey("Cache-Control") && runCalculationResponse.Headers["Cache-Control"][0] is var maxAge && !string.IsNullOrWhiteSpace(maxAge)) { var age = int.Parse(maxAge.Replace("max-age=", "")); Console.WriteLine($"Sleeping for {age} seconds"); Thread.Sleep(age * 1000); } else { Console.WriteLine("Sleeping for 2 seconds"); // Sleep for at least 2 seconds. Thread.Sleep(2000); } runCalculationResponse = calculationApi.GetVaultCalculationByIdWithHttpInfo(calculationId); }
public void Init() { _calculationsApi = new VaultCalculationsApi(CommonFunctions.BuildConfiguration(Engine.VAULT)); _componentsApi = new ComponentsApi(CommonFunctions.BuildConfiguration(Engine.VAULT)); _configurationsApi = new ConfigurationsApi(CommonFunctions.BuildConfiguration(Engine.VAULT)); }
public static void Main(string[] args) { try { var calculationParameters = new VaultCalculationParametersRoot { Data = new Dictionary <string, VaultCalculationParameters> { { "1", GetVaultCalculationParameters1() }, { "2", GetVaultCalculationParameters2() } } }; var calculationApi = new VaultCalculationsApi(GetApiConfiguration()); var calculationResponse = calculationApi.PostAndCalculateWithHttpInfo(null, null, calculationParameters); // Comment the above line and uncomment the below lines to add cache control configuration. Results are by default cached for 12 hours; Setting max-stale=300 will fetch a cached result which is at max 5 minutes older. max-stale=0 will be a fresh adhoc run and the max-stale value is in seconds. //var cacheControl = "max-stale=300"; //var calculationResponse = calculationApi.PostAndCalculateWithHttpInfo(null, cacheControl, calculationParameters); CalculationStatusRoot status = (CalculationStatusRoot)calculationResponse.Data; var calculationId = status.Data.Calculationid; Console.WriteLine("Calculation Id: " + calculationId); ApiResponse <CalculationStatusRoot> getStatusResponse = null; while (status.Data.Status == CalculationStatus.StatusEnum.Queued || status.Data.Status == CalculationStatus.StatusEnum.Executing) { if (getStatusResponse != null) { if (getStatusResponse.Headers.ContainsKey("Cache-Control")) { var maxAge = getStatusResponse.Headers["Cache-Control"][0]; if (string.IsNullOrWhiteSpace(maxAge)) { Console.WriteLine("Sleeping for 2 seconds"); // Sleep for at least 2 seconds. Thread.Sleep(2000); } else { var age = int.Parse(maxAge.Replace("max-age=", "")); Console.WriteLine($"Sleeping for {age} seconds"); Thread.Sleep(age * 1000); } } } getStatusResponse = calculationApi.GetCalculationStatusByIdWithHttpInfo(calculationId); status = getStatusResponse.Data; } Console.WriteLine("Calculation Completed"); foreach (var vaultCalculation in status.Data.Units) { if (vaultCalculation.Value.Status == CalculationUnitStatus.StatusEnum.Success) { var resultResponse = calculationApi.GetCalculationUnitResultByIdWithHttpInfo(calculationId, vaultCalculation.Key); PrintResult(resultResponse.Data); } else { Console.WriteLine($"Calculation Unit Id : {vaultCalculation.Key} Failed!!!"); Console.WriteLine($"Error message : {vaultCalculation.Value.Errors}"); } } Console.ReadKey(); } catch (ApiException e) { Console.WriteLine($"Status Code: {e.ErrorCode}"); Console.WriteLine($"Reason : {e.Message}"); Console.WriteLine(e.StackTrace); } catch (Exception e) { Console.WriteLine(e); throw; } }
public void Init() { vaultCalculationsApi = new VaultCalculationsApi(CommonFunctions.BuildConfiguration()); componentsApi = new ComponentsApi(CommonFunctions.BuildConfiguration()); configurationsApi = new ConfigurationsApi(CommonFunctions.BuildConfiguration()); }