-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5d3e515
commit c1101bc
Showing
9 changed files
with
216 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
using Apps.Lionbridge.Api; | ||
using Apps.Lionbridge.Constants; | ||
using Apps.Lionbridge.Extensions; | ||
using Apps.Lionbridge.Models.Dtos; | ||
using Apps.Lionbridge.Models.Requests.File; | ||
using Apps.Lionbridge.Models.Requests.Job; | ||
using Apps.Lionbridge.Models.Requests.TranslationMemory; | ||
using Apps.Lionbridge.Models.Responses.TranslationMemory; | ||
using Blackbird.Applications.Sdk.Common; | ||
using Blackbird.Applications.Sdk.Common.Actions; | ||
using Blackbird.Applications.Sdk.Common.Invocation; | ||
using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; | ||
using RestSharp; | ||
|
||
namespace Apps.Lionbridge.Actions; | ||
|
||
[ActionList] | ||
public class TranslationMemoryActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient) | ||
: LionbridgeInvocable(invocationContext) | ||
{ | ||
[Action("Add translation memory", Description = "Add a translation memory to a job")] | ||
public async Task<TranslationMemoryResponse> AddTranslationMemory([ActionParameter] GetJobRequest request, | ||
[ActionParameter] AddTranslationMemoryRequest addTranslationMemoryRequest, | ||
[ActionParameter] AddSourceFileRequest fileRequest) | ||
{ | ||
var uploadResponse = await UploadFmsFile(request.JobId, fileRequest, fileManagementClient); | ||
string endpoint = $"{ApiEndpoints.Jobs}/{request.JobId}{ApiEndpoints.TranslationMemories}"; | ||
var extendedMetadata = EnumerableExtensions.ToDictionary(addTranslationMemoryRequest.ExtendedMetadataKeys, addTranslationMemoryRequest.ExtendedMetadataValues); | ||
|
||
var apiRequest = new LionbridgeRequest(endpoint, Method.Post) | ||
.AddJsonBody(new | ||
{ | ||
fmsFileId = uploadResponse.FmsFileId, | ||
sourceNativeLanguageCode = addTranslationMemoryRequest.SourceNativeLanguageCode, | ||
targetNativeLanguageCode = addTranslationMemoryRequest.TargetNativeLanguageCode, | ||
extendedMetadata = extendedMetadata | ||
}); | ||
|
||
var dto = await Client.ExecuteWithErrorHandling<TranslationMemoryDto>(apiRequest); | ||
return new TranslationMemoryResponse(dto); | ||
} | ||
|
||
[Action("Get translation memory", Description = "Get a translation memory.")] | ||
public async Task<TranslationMemoryResponse> GetTranslationMemory( | ||
[ActionParameter] GetTranslationMemoryRequest request) | ||
{ | ||
string endpoint = $"{ApiEndpoints.Jobs}/{request.LionBridgeJobId}{ApiEndpoints.TranslationMemories}/{request.TmupdateId}"; | ||
var apiRequest = new LionbridgeRequest(endpoint); | ||
var dto = await Client.ExecuteWithErrorHandling<TranslationMemoryDto>(apiRequest); | ||
return new TranslationMemoryResponse(dto); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
Apps.Lionbridge/DataSourceHandlers/TranslationMemoryDataSourceHandler.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
using Apps.Lionbridge.Api; | ||
using Apps.Lionbridge.Constants; | ||
using Apps.Lionbridge.Models.Requests.SupportAssets; | ||
using Apps.Lionbridge.Models.Responses.TranslationMemory; | ||
using Blackbird.Applications.Sdk.Common; | ||
using Blackbird.Applications.Sdk.Common.Dynamic; | ||
using Blackbird.Applications.Sdk.Common.Invocation; | ||
|
||
namespace Apps.Lionbridge.DataSourceHandlers; | ||
|
||
public class TranslationMemoryDataSourceHandler : LionbridgeInvocable, IAsyncDataSourceHandler | ||
{ | ||
private readonly string _jobId; | ||
|
||
public TranslationMemoryDataSourceHandler(InvocationContext invocationContext, | ||
[ActionParameter] GetSupportAssetRequest request) : base(invocationContext) | ||
{ | ||
_jobId = request.LionBridgeJobId; | ||
} | ||
|
||
public async Task<Dictionary<string, string>> GetDataAsync(DataSourceContext context, | ||
CancellationToken cancellationToken) | ||
{ | ||
if(string.IsNullOrEmpty(_jobId)) | ||
{ | ||
throw new InvalidOperationException("You should provide a Job ID first"); | ||
} | ||
|
||
var endpoint = $"{ApiEndpoints.Jobs}/{_jobId}{ApiEndpoints.TranslationMemories}"; | ||
var request = new LionbridgeRequest(endpoint); | ||
|
||
var response = await Client.ExecuteWithErrorHandling<TranslationMemoriesResponse>(request); | ||
|
||
return response.Embedded.tmupdates.Where(job => | ||
context.SearchString == null || | ||
job.FileName.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) | ||
.ToDictionary(job => job.TmupdateId, job => job.FileName); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
using Newtonsoft.Json; | ||
|
||
namespace Apps.Lionbridge.Models.Dtos; | ||
|
||
public class TranslationMemoryDto | ||
{ | ||
[JsonProperty("tmupdateId")] | ||
public string TmupdateId { get; set; } | ||
|
||
[JsonProperty("jobId")] | ||
public string JobId { get; set; } | ||
|
||
[JsonProperty("fileId")] | ||
public string FileId { get; set; } | ||
|
||
[JsonProperty("fileType")] | ||
public string FileType { get; set; } | ||
|
||
[JsonProperty("fileName")] | ||
public string FileName { get; set; } | ||
|
||
[JsonProperty("sourceNativeLanguageCode")] | ||
public string SourceNativeLanguageCode { get; set; } | ||
|
||
[JsonProperty("targetNativeLanguageCode")] | ||
public string TargetNativeLanguageCode { get; set; } | ||
|
||
[JsonProperty("extendedMetadata")] | ||
public Dictionary<string, string> ExtendedMetadata { get; set; } | ||
} |
18 changes: 18 additions & 0 deletions
18
Apps.Lionbridge/Models/Requests/TranslationMemory/AddTranslationMemoryRequest.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
using Blackbird.Applications.Sdk.Common; | ||
|
||
namespace Apps.Lionbridge.Models.Requests.TranslationMemory; | ||
|
||
public class AddTranslationMemoryRequest | ||
{ | ||
[Display("Source native language code")] | ||
public string SourceNativeLanguageCode { get; set; } | ||
|
||
[Display("Target native language code")] | ||
public string TargetNativeLanguageCode { get; set; } | ||
|
||
[Display("Extended metadata keys")] | ||
public IEnumerable<string>? ExtendedMetadataKeys { get; set; } | ||
|
||
[Display("Extended metadata values")] | ||
public IEnumerable<string>? ExtendedMetadataValues { get; set; } | ||
} |
14 changes: 14 additions & 0 deletions
14
Apps.Lionbridge/Models/Requests/TranslationMemory/GetTranslationMemoryRequest.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
using Apps.Lionbridge.DataSourceHandlers; | ||
using Blackbird.Applications.Sdk.Common; | ||
using Blackbird.Applications.Sdk.Common.Dynamic; | ||
|
||
namespace Apps.Lionbridge.Models.Requests.TranslationMemory; | ||
|
||
public class GetTranslationMemoryRequest | ||
{ | ||
[Display("Job ID"), DataSource(typeof(JobDataSourceHandler))] | ||
public string LionBridgeJobId { get; set; } | ||
|
||
[Display("TM update ID"), DataSource(typeof(TranslationMemoryDataSourceHandler))] | ||
public string TmupdateId { get; set; } | ||
} |
10 changes: 10 additions & 0 deletions
10
Apps.Lionbridge/Models/Responses/TranslationMemory/TranslationMemoriesResponse.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
using Apps.Lionbridge.Models.Dtos; | ||
|
||
namespace Apps.Lionbridge.Models.Responses.TranslationMemory; | ||
|
||
public class TranslationMemoriesResponse : EmbeddedItemsWrapper<TranslationMemoriesWrapper> | ||
{ | ||
|
||
} | ||
|
||
public record TranslationMemoriesWrapper(IEnumerable<TranslationMemoryDto> tmupdates); |
47 changes: 47 additions & 0 deletions
47
Apps.Lionbridge/Models/Responses/TranslationMemory/TranslationMemoryResponse.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
using Apps.Lionbridge.Models.Dtos; | ||
using Blackbird.Applications.Sdk.Common; | ||
|
||
namespace Apps.Lionbridge.Models.Responses.TranslationMemory; | ||
|
||
public class TranslationMemoryResponse | ||
{ | ||
[Display("TM update ID")] | ||
public string TmupdateId { get; set; } | ||
|
||
[Display("Job ID")] | ||
public string JobId { get; set; } | ||
|
||
[Display("File ID")] | ||
public string FileId { get; set; } | ||
|
||
[Display("File type")] | ||
public string FileType { get; set; } | ||
|
||
[Display("Filename")] | ||
public string FileName { get; set; } | ||
|
||
[Display("Source native language code")] | ||
public string SourceNativeLanguageCode { get; set; } | ||
|
||
[Display("Target native language code")] | ||
public string TargetNativeLanguageCode { get; set; } | ||
|
||
[Display("Extended metadata keys")] | ||
public IEnumerable<string> ExtendedMetadataKeys { get; set; } | ||
|
||
[Display("Extended metadata values")] | ||
public IEnumerable<string> ExtendedMetadataValues { get; set; } | ||
|
||
public TranslationMemoryResponse(TranslationMemoryDto translationMemoryDto) | ||
{ | ||
TmupdateId = translationMemoryDto.TmupdateId; | ||
JobId = translationMemoryDto.JobId; | ||
FileId = translationMemoryDto.FileId; | ||
FileType = translationMemoryDto.FileType; | ||
FileName = translationMemoryDto.FileName; | ||
SourceNativeLanguageCode = translationMemoryDto.SourceNativeLanguageCode; | ||
TargetNativeLanguageCode = translationMemoryDto.TargetNativeLanguageCode; | ||
ExtendedMetadataKeys = translationMemoryDto.ExtendedMetadata.Keys.ToArray(); | ||
ExtendedMetadataValues = translationMemoryDto.ExtendedMetadata.Values.ToArray(); | ||
} | ||
} |