diff --git a/Apps.Wordpress/Actions/MediaActions.cs b/Apps.Wordpress/Actions/MediaActions.cs index ec1b4f6..a3dee83 100644 --- a/Apps.Wordpress/Actions/MediaActions.cs +++ b/Apps.Wordpress/Actions/MediaActions.cs @@ -6,6 +6,8 @@ using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Authentication; using Blackbird.Applications.Sdk.Common.Invocation; +using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; +using Blackbird.Applications.Sdk.Utils.Extensions.Files; using Blackbird.Applications.Sdk.Utils.Parsers; namespace Apps.Wordpress.Actions; @@ -13,11 +15,15 @@ namespace Apps.Wordpress.Actions; [ActionList] public class MediaActions : BaseInvocable { + private readonly IFileManagementClient _fileManagementClient; + private IEnumerable Creds => InvocationContext.AuthenticationCredentialsProviders; - public MediaActions(InvocationContext invocationContext) : base(invocationContext) + public MediaActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient) + : base(invocationContext) { + _fileManagementClient = fileManagementClient; } #region Get @@ -51,8 +57,9 @@ public async Task GetMediaById([ActionParameter] MediaRequest me public async Task UploadMedia([ActionParameter] UploadMedia request) { var client = new CustomWordpressClient(Creds); - var media = await client.Media.CreateAsync(new MemoryStream(request.File.Bytes), request.FileName ?? request.File.Name); - + var fileStream = await _fileManagementClient.DownloadAsync(request.File); + var fileBytes = await fileStream.GetByteData(); + var media = await client.Media.CreateAsync(new MemoryStream(fileBytes), request.FileName ?? request.File.Name); return new(media); } @@ -70,6 +77,4 @@ public Task DeleteMedia([ActionParameter] MediaRequest media) } #endregion - - } \ No newline at end of file diff --git a/Apps.Wordpress/Actions/PageActions.cs b/Apps.Wordpress/Actions/PageActions.cs index a95bfd0..0fd7a6e 100644 --- a/Apps.Wordpress/Actions/PageActions.cs +++ b/Apps.Wordpress/Actions/PageActions.cs @@ -17,12 +17,13 @@ using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Authentication; using Blackbird.Applications.Sdk.Common.Invocation; +using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; +using Blackbird.Applications.Sdk.Utils.Extensions.Files; using Blackbird.Applications.Sdk.Utils.Extensions.String; using Blackbird.Applications.Sdk.Utils.Extensions.System; using Blackbird.Applications.Sdk.Utils.Html.Extensions; using Blackbird.Applications.Sdk.Utils.Parsers; using RestSharp; -using WordPressPCL.Models; namespace Apps.Wordpress.Actions; @@ -31,11 +32,15 @@ public class PageActions : BaseInvocable { private const string Endpoint = "pages"; + private readonly IFileManagementClient _fileManagementClient; + private IEnumerable Creds => InvocationContext.AuthenticationCredentialsProviders; - public PageActions(InvocationContext invocationContext) : base(invocationContext) + public PageActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient) + : base(invocationContext) { + _fileManagementClient = fileManagementClient; } #region Get @@ -113,12 +118,11 @@ public async Task GetPageByIdAsHtml([ActionParameter] PageRequest var page = await client.Pages.GetByIDAsync(input.Id); var html = (page.Title.Rendered, page.Content.Rendered).AsHtml(); - - return new(new(Encoding.UTF8.GetBytes(html)) - { - Name = $"{page.Title.Rendered}.html", - ContentType = MediaTypeNames.Text.Html - }); + + using var stream = new MemoryStream(Encoding.UTF8.GetBytes(html)); + var file = await _fileManagementClient.UploadAsync(stream, MediaTypeNames.Text.Html, + $"{page.Title.Rendered}.html"); + return new(file); } #endregion @@ -159,11 +163,13 @@ [ActionParameter] PageTranslationOptions translationOptions private Task ExecuteModification(FileModificationRequest input, PageTranslationOptions translationOptions, string? id) { - var html = Encoding.UTF8.GetString(input.File.Bytes); + var fileStream = await _fileManagementClient.DownloadAsync(input.File); + var fileBytes = await fileStream.GetByteData(); + var html = Encoding.UTF8.GetString(fileBytes); var htmlDocument = html.AsHtmlDocument(); var title = htmlDocument.GetTitle(); var body = htmlDocument.GetBody(); - return ExecuteModification(new ModificationRequest { Title = title, Content = body }, translationOptions, id); + return await ExecuteModification(new ModificationRequest { Title = title, Content = body }, translationOptions, id); } private async Task ExecuteModification(ModificationRequest input, PageTranslationOptions translationOptions, string? id) diff --git a/Apps.Wordpress/Actions/PostActions.cs b/Apps.Wordpress/Actions/PostActions.cs index 163b7d5..efb2a3c 100644 --- a/Apps.Wordpress/Actions/PostActions.cs +++ b/Apps.Wordpress/Actions/PostActions.cs @@ -1,9 +1,7 @@ -using System.Net; -using System.Net.Mime; +using System.Net.Mime; using System.Text; using Apps.Wordpress.Api; using Apps.Wordpress.Api.RestSharp; -using Apps.Wordpress.Constants; using Apps.Wordpress.Extensions; using Apps.Wordpress.Models.Dtos; using Apps.Wordpress.Models.Entities; @@ -17,12 +15,13 @@ using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Authentication; using Blackbird.Applications.Sdk.Common.Invocation; +using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; +using Blackbird.Applications.Sdk.Utils.Extensions.Files; using Blackbird.Applications.Sdk.Utils.Extensions.String; using Blackbird.Applications.Sdk.Utils.Extensions.System; using Blackbird.Applications.Sdk.Utils.Html.Extensions; using Blackbird.Applications.Sdk.Utils.Parsers; using RestSharp; -using WordPressPCL.Models; namespace Apps.Wordpress.Actions; @@ -30,11 +29,16 @@ namespace Apps.Wordpress.Actions; public class PostActions : BaseInvocable { private const string Endpoint = "posts"; + + private readonly IFileManagementClient _fileManagementClient; + private IEnumerable Creds => InvocationContext.AuthenticationCredentialsProviders; - public PostActions(InvocationContext invocationContext) : base(invocationContext) + public PostActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient) + : base(invocationContext) { + _fileManagementClient = fileManagementClient; } #region Get @@ -112,12 +116,11 @@ public async Task GetPostByIdAsHtml([ActionParameter] PostRequest var post = await client.Posts.GetByIDAsync(input.Id); var html = (post.Title.Rendered, post.Content.Rendered).AsHtml(); - - return new(new(Encoding.UTF8.GetBytes(html)) - { - Name = $"{post.Title.Rendered}.html", - ContentType = MediaTypeNames.Text.Html - }); + + using var stream = new MemoryStream(Encoding.UTF8.GetBytes(html)); + var file = await _fileManagementClient.UploadAsync(stream, MediaTypeNames.Text.Html, + $"{post.Title.Rendered}.html"); + return new(file); } #endregion @@ -158,11 +161,13 @@ [ActionParameter] PostTranslationOptions translationOptions private Task ExecuteModification(FileModificationRequest input, PostTranslationOptions translationOptions, string? id) { - var html = Encoding.UTF8.GetString(input.File.Bytes); + var fileStream = await _fileManagementClient.DownloadAsync(input.File); + var fileBytes = await fileStream.GetByteData(); + var html = Encoding.UTF8.GetString(fileBytes); var htmlDocument = html.AsHtmlDocument(); var title = htmlDocument.GetTitle(); var body = htmlDocument.GetBody(); - return ExecuteModification(new ModificationRequest { Title = title, Content = body }, translationOptions, id); + return await ExecuteModification(new ModificationRequest { Title = title, Content = body }, translationOptions, id); } private async Task ExecuteModification(ModificationRequest input, PostTranslationOptions translationOptions, string? id) diff --git a/Apps.Wordpress/Apps.Wordpress.csproj b/Apps.Wordpress/Apps.Wordpress.csproj index 646f8b2..7303986 100644 --- a/Apps.Wordpress/Apps.Wordpress.csproj +++ b/Apps.Wordpress/Apps.Wordpress.csproj @@ -1,6 +1,6 @@  - net7.0 + net8.0 enable enable Wordpress (+ Polylang) @@ -9,8 +9,9 @@ Apps.Wordpress - - + + + diff --git a/Apps.Wordpress/Models/Requests/CreateFromFileRequest.cs b/Apps.Wordpress/Models/Requests/CreateFromFileRequest.cs deleted file mode 100644 index 9259b82..0000000 --- a/Apps.Wordpress/Models/Requests/CreateFromFileRequest.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Apps.Wordpress.DataSourceHandlers; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Dynamic; -using File = Blackbird.Applications.Sdk.Common.Files.File; - -namespace Apps.Wordpress.Models.Requests; - -public class CreateFromFileRequest -{ - public File File { get; set; } -} \ No newline at end of file diff --git a/Apps.Wordpress/Models/Requests/FileModificationRequest.cs b/Apps.Wordpress/Models/Requests/FileModificationRequest.cs index 5ea22f9..a1b995a 100644 --- a/Apps.Wordpress/Models/Requests/FileModificationRequest.cs +++ b/Apps.Wordpress/Models/Requests/FileModificationRequest.cs @@ -1,14 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using File = Blackbird.Applications.Sdk.Common.Files.File; +using Blackbird.Applications.Sdk.Common.Files; namespace Apps.Wordpress.Models.Requests { public class FileModificationRequest { - public File File { get; set; } + public FileReference File { get; set; } } } diff --git a/Apps.Wordpress/Models/Requests/Media/UploadMedia.cs b/Apps.Wordpress/Models/Requests/Media/UploadMedia.cs index f0b2127..0752ed2 100644 --- a/Apps.Wordpress/Models/Requests/Media/UploadMedia.cs +++ b/Apps.Wordpress/Models/Requests/Media/UploadMedia.cs @@ -1,10 +1,10 @@ using Blackbird.Applications.Sdk.Common; -using File = Blackbird.Applications.Sdk.Common.Files.File; +using Blackbird.Applications.Sdk.Common.Files; namespace Apps.Wordpress.Models.Requests.Media; public class UploadMedia { [Display("File name")] public string? FileName { get; set; } - [Display("File content")] public File File { get; set; } + [Display("File content")] public FileReference File { get; set; } } \ No newline at end of file diff --git a/Apps.Wordpress/Models/Requests/UpdateFromFileRequest.cs b/Apps.Wordpress/Models/Requests/UpdateFromFileRequest.cs deleted file mode 100644 index 250abf7..0000000 --- a/Apps.Wordpress/Models/Requests/UpdateFromFileRequest.cs +++ /dev/null @@ -1,8 +0,0 @@ -using File = Blackbird.Applications.Sdk.Common.Files.File; - -namespace Apps.Wordpress.Models.Requests; - -public class UpdateFromFileRequest -{ - public File File { get; set; } -} \ No newline at end of file diff --git a/Apps.Wordpress/Models/Responses/FileResponse.cs b/Apps.Wordpress/Models/Responses/FileResponse.cs index 603fd93..ea103d0 100644 --- a/Apps.Wordpress/Models/Responses/FileResponse.cs +++ b/Apps.Wordpress/Models/Responses/FileResponse.cs @@ -1,5 +1,5 @@ -using File = Blackbird.Applications.Sdk.Common.Files.File; +using Blackbird.Applications.Sdk.Common.Files; namespace Apps.Wordpress.Models.Responses; -public record FileResponse(File File); +public record FileResponse(FileReference File);