-
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
1d557b7
commit 1c11862
Showing
10 changed files
with
273 additions
and
33 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
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,63 @@ | ||
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.SupportAssets; | ||
using Apps.Lionbridge.Models.Responses.SupportAssets; | ||
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 SupportAssetsActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient) | ||
: LionbridgeInvocable(invocationContext) | ||
{ | ||
[Action("Get support asset", Description = "Get a support asset.")] | ||
public async Task<SupportAssetResponse> GetSupportAsset([ActionParameter] GetSupportAssetRequest request) | ||
{ | ||
string endpoint = $"{ApiEndpoints.Jobs}/{request.JobId}{ApiEndpoints.SupportAssets}/{request.SupportAssetId}"; | ||
var apiRequest = new LionbridgeRequest(endpoint); | ||
|
||
var dto = await Client.ExecuteWithErrorHandling<SupportAssetDto>(apiRequest); | ||
return new SupportAssetResponse(dto); | ||
} | ||
|
||
[Action("Delete support asset", Description = "Delete a support asset.")] | ||
public async Task DeleteSupportAsset([ActionParameter] GetSupportAssetRequest request) | ||
{ | ||
string endpoint = $"{ApiEndpoints.Jobs}/{request.JobId}{ApiEndpoints.SupportAssets}/{request.SupportAssetId}"; | ||
var apiRequest = new LionbridgeRequest(endpoint, Method.Delete); | ||
|
||
await Client.ExecuteWithErrorHandling(apiRequest); | ||
} | ||
|
||
[Action("Add support asset", Description = "Add a support asset to a job")] | ||
public async Task<SupportAssetResponse> AddSupportAsset([ActionParameter] GetJobRequest request, | ||
[ActionParameter] AddSupportAssetRequest addSupportAssetRequest, | ||
[ActionParameter] AddSourceFileRequest fileRequest) | ||
{ | ||
var uploadResponse = await UploadFmsFile(request.JobId, fileRequest, fileManagementClient); | ||
|
||
string endpoint = $"{ApiEndpoints.Jobs}/{request.JobId}{ApiEndpoints.SupportAssets}"; | ||
var metadata = EnumerableExtensions.ToDictionary(addSupportAssetRequest.ExtendedMetadataKeys, addSupportAssetRequest.ExtendedMetadataValues); | ||
var apiRequest = new LionbridgeRequest(endpoint, Method.Post) | ||
.AddJsonBody(new | ||
{ | ||
fmsFileId = uploadResponse.FmsFileId, | ||
description = addSupportAssetRequest.Description, | ||
sourceNativeIds = addSupportAssetRequest.SourceNativeIds, | ||
sourceNativeLanguageCode = addSupportAssetRequest.SourceNativeLanguageCode, | ||
targetNativeLanguageCodes = addSupportAssetRequest.TargetNativeLanguageCodes ?? [fileRequest.TargetNativeLanguage], | ||
extendedMetadata = metadata | ||
}); | ||
|
||
var dto = await Client.ExecuteWithErrorHandling<SupportAssetDto>(apiRequest); | ||
return new SupportAssetResponse(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
33 changes: 33 additions & 0 deletions
33
Apps.Lionbridge/DataSourceHandlers/SupportAssetDataSourceHandler.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,33 @@ | ||
using Apps.Lionbridge.Api; | ||
using Apps.Lionbridge.Constants; | ||
using Apps.Lionbridge.Models.Requests.SupportAssets; | ||
using Apps.Lionbridge.Models.Responses.SupportAssets; | ||
using Blackbird.Applications.Sdk.Common; | ||
using Blackbird.Applications.Sdk.Common.Dynamic; | ||
using Blackbird.Applications.Sdk.Common.Invocation; | ||
|
||
namespace Apps.Lionbridge.DataSourceHandlers; | ||
|
||
public class SupportAssetDataSourceHandler : LionbridgeInvocable, IAsyncDataSourceHandler | ||
{ | ||
private readonly string _jobId; | ||
|
||
public SupportAssetDataSourceHandler(InvocationContext invocationContext, [ActionParameter] GetSupportAssetRequest request) : base(invocationContext) | ||
{ | ||
_jobId = request.JobId; | ||
} | ||
|
||
public async Task<Dictionary<string, string>> GetDataAsync(DataSourceContext context, | ||
CancellationToken cancellationToken) | ||
{ | ||
var endpoint = $"{ApiEndpoints.Jobs}/{_jobId}{ApiEndpoints.SupportAssets}"; | ||
var request = new LionbridgeRequest(endpoint); | ||
|
||
var response = await Client.ExecuteWithErrorHandling<SupportAssetsResponse>(request); | ||
|
||
return response.Embedded.SupportAssets.Where(job => | ||
context.SearchString == null || | ||
job.Filename.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) | ||
.ToDictionary(job => job.SupportAssetId, 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
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,37 @@ | ||
using Blackbird.Applications.Sdk.Common; | ||
using Newtonsoft.Json; | ||
|
||
namespace Apps.Lionbridge.Models.Dtos; | ||
|
||
public class SupportAssetDto | ||
{ | ||
[JsonProperty("supportassetId")] | ||
public string SupportAssetId { get; set; } | ||
|
||
[JsonProperty("fileId")] | ||
public string FileId { get; set; } | ||
|
||
[JsonProperty("jobId")] | ||
public string JobId { get; set; } | ||
|
||
[JsonProperty("filename")] | ||
public string Filename { get; set; } | ||
|
||
[JsonProperty("description")] | ||
public string Description { get; set; } | ||
|
||
[JsonProperty("sourceNativeIds")] | ||
public string[] SourceNativeIds { get; set; } | ||
|
||
[JsonProperty("sourceNativeLanguageCode")] | ||
public string SourceNativeLanguageCode { get; set; } | ||
|
||
[JsonProperty("targetNativeLanguageCodes")] | ||
public string[] TargetNativeLanguageCodes { get; set; } | ||
|
||
[JsonProperty("createdDate")] | ||
public DateTime CreatedDate { get; set; } | ||
|
||
[JsonProperty("extendedMetadata")] | ||
public Dictionary<string, string> ExtendedMetadata { get; set; } | ||
} |
24 changes: 24 additions & 0 deletions
24
Apps.Lionbridge/Models/Requests/SupportAssets/AddSupportAssetRequest.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,24 @@ | ||
using Blackbird.Applications.Sdk.Common; | ||
using Blackbird.Applications.Sdk.Common.Files; | ||
|
||
namespace Apps.Lionbridge.Models.Requests.SupportAssets; | ||
|
||
public class AddSupportAssetRequest | ||
{ | ||
public string? Description { get; set; } | ||
|
||
[Display("Source native language")] | ||
public IEnumerable<string> SourceNativeIds { get; set; } | ||
|
||
[Display("Source native language code")] | ||
public string SourceNativeLanguageCode { get; set; } | ||
|
||
[Display("Target native language codes")] | ||
public IEnumerable<string>? TargetNativeLanguageCodes { 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/SupportAssets/GetSupportAssetRequest.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.SupportAssets; | ||
|
||
public class GetSupportAssetRequest | ||
{ | ||
[Display("Job ID"), DataSource(typeof(JobDataSourceHandler))] | ||
public string JobId { get; set; } | ||
|
||
[Display("Support asset ID"), DataSource(typeof(SupportAssetDataSourceHandler))] | ||
public string SupportAssetId { get; set; } | ||
} |
56 changes: 56 additions & 0 deletions
56
Apps.Lionbridge/Models/Responses/SupportAssets/SupportAssetResponse.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,56 @@ | ||
using Apps.Lionbridge.Models.Dtos; | ||
using Blackbird.Applications.Sdk.Common; | ||
|
||
namespace Apps.Lionbridge.Models.Responses.SupportAssets; | ||
|
||
public class SupportAssetResponse | ||
{ | ||
[Display("Support asset ID")] | ||
public string SupportAssetId { get; set; } | ||
|
||
[Display("File ID")] | ||
public string FileId { get; set; } | ||
|
||
[Display("Job ID")] | ||
public string JobId { get; set; } | ||
|
||
[Display("Filename")] | ||
public string Filename { get; set; } | ||
|
||
[Display("Description")] | ||
public string Description { get; set; } | ||
|
||
[Display("Source native IDs")] | ||
public string[] SourceNativeIds { get; set; } | ||
|
||
[Display("Source native language code")] | ||
public string SourceNativeLanguageCode { get; set; } | ||
|
||
[Display("Target native language codes")] | ||
public string[] TargetNativeLanguageCodes { get; set; } | ||
|
||
[Display("Created date")] | ||
public DateTime CreatedDate { get; set; } | ||
|
||
[Display("Extended metadata keys")] | ||
public string[] ExtendedMetadataKeys { get; set; } | ||
|
||
[Display("Extended metadata values")] | ||
public string[] ExtendedMetadataValues { get; set; } | ||
|
||
public SupportAssetResponse(SupportAssetDto supportAssetDto) | ||
{ | ||
SupportAssetId = supportAssetDto.SupportAssetId; | ||
FileId = supportAssetDto.FileId; | ||
JobId = supportAssetDto.JobId; | ||
Filename = supportAssetDto.Filename; | ||
Description = supportAssetDto.Description; | ||
SourceNativeIds = supportAssetDto.SourceNativeIds; | ||
SourceNativeLanguageCode = supportAssetDto.SourceNativeLanguageCode; | ||
TargetNativeLanguageCodes = supportAssetDto.TargetNativeLanguageCodes; | ||
CreatedDate = supportAssetDto.CreatedDate; | ||
ExtendedMetadataKeys = supportAssetDto.ExtendedMetadata.Keys.ToArray(); | ||
ExtendedMetadataValues = supportAssetDto.ExtendedMetadata.Values.ToArray(); | ||
} | ||
} | ||
|
10 changes: 10 additions & 0 deletions
10
Apps.Lionbridge/Models/Responses/SupportAssets/SupportAssetsResponse.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.SupportAssets; | ||
|
||
public class SupportAssetsResponse : EmbeddedItemsWrapper<SupportAssetsWrapper> | ||
{ | ||
|
||
} | ||
|
||
public record SupportAssetsWrapper(IEnumerable<SupportAssetDto> SupportAssets); |