From d25c32b19a2a37796d8d557131b6b7bab33d87d5 Mon Sep 17 00:00:00 2001 From: sokolenkoolha Date: Wed, 27 Dec 2023 12:37:44 +0200 Subject: [PATCH 1/2] updated files --- Apps.Wordpress/Actions/MediaActions.cs | 15 ++++++--- Apps.Wordpress/Actions/PageActions.cs | 28 +++++++++------- Apps.Wordpress/Actions/PostActions.cs | 33 +++++++++++-------- Apps.Wordpress/Apps.Wordpress.csproj | 8 ++--- .../Models/Requests/CreateFromFileRequest.cs | 11 ------- .../Requests/FileModificationRequest.cs | 9 ++--- .../Models/Requests/Media/UploadMedia.cs | 4 +-- .../Models/Requests/UpdateFromFileRequest.cs | 8 ----- .../Models/Responses/FileResponse.cs | 4 +-- 9 files changed, 56 insertions(+), 64 deletions(-) delete mode 100644 Apps.Wordpress/Models/Requests/CreateFromFileRequest.cs delete mode 100644 Apps.Wordpress/Models/Requests/UpdateFromFileRequest.cs 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 ad7d249..63c6274 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 @@ -157,13 +161,15 @@ [ActionParameter] TranslationOptions translationOptions return ExecuteModification(input, translationOptions, page.Id); } - private Task ExecuteModification(FileModificationRequest input, TranslationOptions translationOptions, string? id) + private async Task ExecuteModification(FileModificationRequest input, TranslationOptions 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, TranslationOptions translationOptions, string? id) diff --git a/Apps.Wordpress/Actions/PostActions.cs b/Apps.Wordpress/Actions/PostActions.cs index 2231ae0..613f4c3 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 @@ -156,13 +159,15 @@ [ActionParameter] TranslationOptions translationOptions return ExecuteModification(input, translationOptions, post.Id); } - private Task ExecuteModification(FileModificationRequest input, TranslationOptions translationOptions, string? id) + private async Task ExecuteModification(FileModificationRequest input, TranslationOptions 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, TranslationOptions translationOptions, string? id) diff --git a/Apps.Wordpress/Apps.Wordpress.csproj b/Apps.Wordpress/Apps.Wordpress.csproj index 8f4b73d..851b04c 100644 --- a/Apps.Wordpress/Apps.Wordpress.csproj +++ b/Apps.Wordpress/Apps.Wordpress.csproj @@ -1,16 +1,16 @@  - net7.0 + net8.0 enable enable Wordpress (+ Polylang) - 1.1.0 + 1.1.1 The world’s most popular website builder 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); From 35d09b5bfa096705a1b7231865e47128c7d6873c Mon Sep 17 00:00:00 2001 From: sokolenkoolha Date: Thu, 28 Dec 2023 13:25:15 +0200 Subject: [PATCH 2/2] updated csproj file --- Apps.Wordpress/Apps.Wordpress.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/Apps.Wordpress/Apps.Wordpress.csproj b/Apps.Wordpress/Apps.Wordpress.csproj index 851b04c..7303986 100644 --- a/Apps.Wordpress/Apps.Wordpress.csproj +++ b/Apps.Wordpress/Apps.Wordpress.csproj @@ -10,6 +10,7 @@ +