From 20126b5d7b11986261d09b8d4198d153f214bc2e Mon Sep 17 00:00:00 2001 From: Alexander Morogov <42555001+krankenbro@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:51:35 +0200 Subject: [PATCH] VCI-902: download manifest (#143) --- src/VirtoCommerce.Build/Cloud/Build.SaaS.cs | 8 ++++++++ .../Cloud/Client/VirtoCloudClient.cs | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/VirtoCommerce.Build/Cloud/Build.SaaS.cs b/src/VirtoCommerce.Build/Cloud/Build.SaaS.cs index 79f8cc9..a38c9f6 100644 --- a/src/VirtoCommerce.Build/Cloud/Build.SaaS.cs +++ b/src/VirtoCommerce.Build/Cloud/Build.SaaS.cs @@ -318,6 +318,14 @@ private static void CopyPlatformDirectory(AbsolutePath platformDirectory, Absolu SaveCloudToken(apiKey); }); + public Target CloudDownloadManifest => _ => _ + .Executes(async () => + { + var cloudClient = new VirtoCloudClient(CloudUrl, await GetCloudTokenAsync()); + var manifest = await cloudClient.GetManifest(EnvironmentName, SaaSOrganizationName); + File.WriteAllText(string.IsNullOrWhiteSpace(Manifest) ? Path.Combine(Directory.GetCurrentDirectory(), $"{EnvironmentName}.yml") : Manifest, manifest); + }); + private async Task GetCloudTokenAsync() { if (!string.IsNullOrEmpty(CloudToken)) diff --git a/src/VirtoCommerce.Build/Cloud/Client/VirtoCloudClient.cs b/src/VirtoCommerce.Build/Cloud/Client/VirtoCloudClient.cs index 6361e29..c937660 100644 --- a/src/VirtoCommerce.Build/Cloud/Client/VirtoCloudClient.cs +++ b/src/VirtoCommerce.Build/Cloud/Client/VirtoCloudClient.cs @@ -68,4 +68,20 @@ public async Task GetEnvironmentAsync(string environmentName, var env = JsonExtensions.GetJson(responseContent); return env; } + + public async Task GetManifest(string environmentName, string orgName = null) + { + var relativeUri = string.IsNullOrWhiteSpace(orgName) ? $"api/saas/environments/{environmentName}/manifest" : $"api/saas/environments/manifest/{orgName}/{environmentName}"; + var response = await _client.SendAsync(new HttpRequestMessage + { + Method = HttpMethod.Get, + RequestUri = new Uri(relativeUri, UriKind.Relative) + }); + if (!response.IsSuccessStatusCode) + { + Assert.Fail($"{response.ReasonPhrase}: {await response.Content.ReadAsStringAsync()}"); + } + + return await response.Content.ReadAsStringAsync(); + } }