Skip to content

Commit

Permalink
Added retrieve file action
Browse files Browse the repository at this point in the history
  • Loading branch information
vitalii-bezuhlyi committed Mar 15, 2024
1 parent f194d78 commit 5d18889
Show file tree
Hide file tree
Showing 8 changed files with 74 additions and 9 deletions.
4 changes: 1 addition & 3 deletions Apps.Lionbridge/Actions/RequestActions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,7 @@ public async Task<RequestDto> CreateFileRequest([ActionParameter] GetJobRequest
[Action("Get request", Description = "Get a translation request.")]
public async Task<RequestDto> GetRequest([ActionParameter] GetRequest request)
{
var apiRequest = new LionbridgeRequest($"{ApiEndpoints.Jobs}/{request.JobId}" +
$"{ApiEndpoints.Requests}/{request.RequestId}");
return await Client.ExecuteWithErrorHandling<RequestDto>(apiRequest);
return await GetRequest(request.JobId, request.RequestId);
}

[Action("Delete request", Description = "Delete a translation request.")]
Expand Down
39 changes: 39 additions & 0 deletions Apps.Lionbridge/Actions/SourceFileActions.cs
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.Request;
using Apps.Lionbridge.Models.Responses.SourceFile;
using Blackbird.Applications.Sdk.Common;
using Blackbird.Applications.Sdk.Common.Actions;
using Blackbird.Applications.Sdk.Common.Invocation;
using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces;

namespace Apps.Lionbridge.Actions;

[ActionList]
public class SourceFileActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient)
: LionbridgeInvocable(invocationContext)
{
[Action("Retrieve file", Description = "Retrieve a file from specific request")]
public async Task<RetrieveFileResponse> RetrieveFile([ActionParameter] GetRequest request)
{
string endpoint = $"{ApiEndpoints.Jobs}/{request.JobId}{ApiEndpoints.Requests}/{request.RequestId}{ApiEndpoints.RetrieveFile}";
var apiRequest = new LionbridgeRequest(endpoint);

var response = await Client.ExecuteWithErrorHandling(apiRequest);
var bytes = response.RawBytes;

if(bytes == null || bytes.Length == 0)
{
throw new Exception("Uploaded file is empty");
}

var requestModel = await GetRequest(request.JobId, request.RequestId);

var memoryStream = new MemoryStream(bytes);
string fileName = requestModel.FileName;
string contentType = response.ContentType ?? MimeTypes.GetMimeType(fileName);
var fileReference = await fileManagementClient.UploadAsync(memoryStream, contentType, fileName);

return new RetrieveFileResponse { File = fileReference };
}
}
4 changes: 4 additions & 0 deletions Apps.Lionbridge/Apps.Lionbridge.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@
<ItemGroup>
<PackageReference Include="Blackbird.Applications.Sdk.Common" Version="2.5.0"/>
<PackageReference Include="Blackbird.Applications.Sdk.Utils" Version="1.0.25"/>
<PackageReference Include="MimeTypes" Version="2.4.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3"/>
<PackageReference Include="RestSharp" Version="110.2.0"/>
</ItemGroup>
Expand Down
1 change: 1 addition & 0 deletions Apps.Lionbridge/Constants/ApiEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ public static class ApiEndpoints
public const string UpdateFileContent = "/updatefilecontent";
public const string SourceContent = "/sourcecontent";
public const string SourceFiles = "/sourcefiles";
public const string RetrieveFile = "/retrievefile";
}
9 changes: 9 additions & 0 deletions Apps.Lionbridge/LionbridgeInvocable.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using Apps.Lionbridge.Api;
using Apps.Lionbridge.Constants;
using Apps.Lionbridge.Models.Dtos;
using Blackbird.Applications.Sdk.Common;
using Blackbird.Applications.Sdk.Common.Invocation;

Expand All @@ -12,4 +14,11 @@ protected LionbridgeInvocable(InvocationContext invocationContext) : base(invoca
{
Client = new(InvocationContext.AuthenticationCredentialsProviders);
}

protected async Task<RequestDto> GetRequest(string jobId, string requestId)
{
var apiRequest = new LionbridgeRequest($"{ApiEndpoints.Jobs}/{jobId}" +
$"{ApiEndpoints.Requests}/{requestId}");
return await Client.ExecuteWithErrorHandling<RequestDto>(apiRequest);
}
}
12 changes: 12 additions & 0 deletions Apps.Lionbridge/Models/Dtos/RequestDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,16 @@ public class RequestDto

[Display("Source native language")]
public string SourceNativeLanguageCode { get; set; }

[Display("File name")]
public string FileName { get; set; }

[Display("File type")]
public string FileType { get; set; }

[Display("File ID")]
public string FileId { get; set; }

[Display("Source content ID")]
public string SourceContentId { get; set; }
}
6 changes: 0 additions & 6 deletions Apps.Lionbridge/Models/Requests/File/AddSourceFileRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,4 @@ public class AddSourceFileRequest : AddRequestBaseModel

[Display("Target native language")]
public string TargetNativeLanguage { get; set; }

[Display("Fields keys", Description = "Fields keys to be added to the request.")]
public IEnumerable<string> FieldsKeys { get; set; }

[Display("Fields values", Description = "Fields values to be added to the request.")]
public IEnumerable<string> FieldsValues { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Blackbird.Applications.Sdk.Common.Files;

namespace Apps.Lionbridge.Models.Responses.SourceFile;

public class RetrieveFileResponse
{
public FileReference File { get; set; }
}

0 comments on commit 5d18889

Please sign in to comment.