From 27a9a014006e0e9d8508e9fb1b83d540cdbd05d5 Mon Sep 17 00:00:00 2001 From: bohdanm-bb Date: Wed, 1 May 2024 21:29:11 +0300 Subject: [PATCH] Import glossary test --- Apps.BWX/Actions/GlossaryActions.cs | 24 +++++++++---------- .../Requests/ImportGlossaryRequest.cs | 22 +++++++++++++++++ 2 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 Apps.BWX/Models/Glossary/Requests/ImportGlossaryRequest.cs diff --git a/Apps.BWX/Actions/GlossaryActions.cs b/Apps.BWX/Actions/GlossaryActions.cs index c5ccfe7..e0089fe 100644 --- a/Apps.BWX/Actions/GlossaryActions.cs +++ b/Apps.BWX/Actions/GlossaryActions.cs @@ -3,10 +3,12 @@ using Apps.BWX.Invocables; using Apps.BWX.Models.Glossary.Requests; using Apps.BWX.Models.Glossary.Responses; +using Apps.BWX.Models.Project.Requests; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Glossaries.Utils.Converters; +using Blackbird.Applications.Sdk.Utils.Extensions.Files; using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; using RestSharp; using System.Net.Mime; @@ -68,21 +70,17 @@ public async Task ExportGlossary([ActionParameter] Expor return new ExportGlossaryResponse() { File = await _fileManagementClient.UploadAsync(resultStream, MediaTypeNames.Application.Xml, $"{glossaryInfo.Name}.tbx") }; } - //[Action("Import glossary", Description = "Import glossary")] - //public async Task ImportGlossary([ActionParameter] ImportGlossaryRequest input) - //{ - // var client = new PhraseTmsClient(InvocationContext.AuthenticationCredentialsProviders); - - // var fileStream = await _fileManagementClient.DownloadAsync(input.File); - // var fileTBXV2Stream = await fileStream.ConvertFromTBXV3ToV2(); + [Action("Import glossary", Description = "Import glossary")] + public async Task ImportGlossary([ActionParameter] ImportGlossaryRequest input) + { + var fileStream = await _fileManagementClient.DownloadAsync(input.File); + var fileTBXV2Stream = await fileStream.ConvertFromTbxV3ToV2(); - // var endpointGlossaryData = $"/api2/v1/termBases/{input.GlossaryUId}/upload"; - // var requestGlossaryData = new PhraseTmsRequest(endpointGlossaryData.WithQuery(new { updateTerms = false }), Method.Post, InvocationContext.AuthenticationCredentialsProviders); - // requestGlossaryData.AddHeader("Content-Disposition", $"filename*=UTF-8''{input.File.Name}"); - // requestGlossaryData.AddParameter("application/octet-stream", fileTBXV2Stream.GetByteData().Result, ParameterType.RequestBody); + var initImportRequest = new BWXRequest($"/api/v3/glossary/{input.GlossaryId}/import-tbx", Method.Post, Creds); + initImportRequest.AddFile("file", await fileTBXV2Stream.GetByteData(), input.File.Name); - // await client.ExecuteWithHandling(requestGlossaryData); - //} + await Client.ExecuteWithErrorHandling(initImportRequest); + } private async Task GetGlossary([ActionParameter] ExportGlossaryRequest input) { diff --git a/Apps.BWX/Models/Glossary/Requests/ImportGlossaryRequest.cs b/Apps.BWX/Models/Glossary/Requests/ImportGlossaryRequest.cs new file mode 100644 index 0000000..3103303 --- /dev/null +++ b/Apps.BWX/Models/Glossary/Requests/ImportGlossaryRequest.cs @@ -0,0 +1,22 @@ +using Apps.BWX.DataSourceHandlers; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dynamic; +using Blackbird.Applications.Sdk.Common.Files; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Apps.BWX.Models.Glossary.Requests +{ + public class ImportGlossaryRequest + { + [Display("Glossary", Description = "Existing glossary for import")] + [DataSource(typeof(GlossaryDataHandler))] + public string GlossaryId { get; set; } + + [Display("Glossary file", Description = "Glossary file exported from other Blackbird apps")] + public FileReference File { get; set; } + } +}