Skip to content

Commit

Permalink
Merge pull request #13 from bb-io/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
mathijs-bb authored Sep 30, 2024
2 parents 9b872da + 09f5ce6 commit 635e5d9
Show file tree
Hide file tree
Showing 39 changed files with 411 additions and 492 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -353,4 +353,5 @@ ASALocalRun/
healthchecksdb
*.DS_Store
*.dmg
*.env
*.env
/ConsoleApp1
6 changes: 6 additions & 0 deletions Apps.Wordpress.sln
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ VisualStudioVersion = 17.5.33424.131
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Apps.Wordpress", "Apps.Wordpress\Apps.Wordpress.csproj", "{B82808E9-A1BE-422D-ADC0-CA45DF019546}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp1", "ConsoleApp1\ConsoleApp1.csproj", "{475A3241-19CF-4CCB-A95E-FFD1E4960965}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -15,6 +17,10 @@ Global
{B82808E9-A1BE-422D-ADC0-CA45DF019546}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B82808E9-A1BE-422D-ADC0-CA45DF019546}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B82808E9-A1BE-422D-ADC0-CA45DF019546}.Release|Any CPU.Build.0 = Release|Any CPU
{475A3241-19CF-4CCB-A95E-FFD1E4960965}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{475A3241-19CF-4CCB-A95E-FFD1E4960965}.Debug|Any CPU.Build.0 = Debug|Any CPU
{475A3241-19CF-4CCB-A95E-FFD1E4960965}.Release|Any CPU.ActiveCfg = Release|Any CPU
{475A3241-19CF-4CCB-A95E-FFD1E4960965}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
33 changes: 16 additions & 17 deletions Apps.Wordpress/Actions/CommentActions.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
using Apps.Wordpress.Api;
using Apps.Wordpress.Constants;
using Apps.Wordpress.Invocables;
using Apps.Wordpress.Models.Entities;
using Apps.Wordpress.Models.Requests.Comment;
using Apps.Wordpress.Models.Responses.All;
using Blackbird.Applications.Sdk.Common;
using Blackbird.Applications.Sdk.Common.Actions;
using Blackbird.Applications.Sdk.Common.Authentication;
using Blackbird.Applications.Sdk.Common.Invocation;
using Blackbird.Applications.Sdk.Utils.Extensions.Http;
using Blackbird.Applications.Sdk.Utils.Parsers;
using RestSharp;
using WordPressPCL.Models;

namespace Apps.Wordpress.Actions;

[ActionList]
public class CommentActions : BaseInvocable
public class CommentActions : WordpressInvocable
{
private IEnumerable<AuthenticationCredentialsProvider> Creds =>
InvocationContext.AuthenticationCredentialsProviders;

public CommentActions(InvocationContext invocationContext) : base(invocationContext)
{
}
Expand Down Expand Up @@ -50,14 +50,15 @@ public CommentActions(InvocationContext invocationContext) : base(invocationCont
#region Create

[Action("Add comment", Description = "Add comment")]
public async Task<WordPressComment> AddComment([ActionParameter] AddComment request)
public async Task<WordPressComment> AddComment([ActionParameter] AddComment input)
{
var client = new CustomWordpressClient(Creds);
var comment = await client.Comments.CreateAsync(new()
{
PostId = IntParser.Parse(request.PostId, nameof(request.PostId))!.Value,
Content = new(request.Content)
});
var request = new WordpressRestRequest("comments", Method.Post, Creds)
.WithJsonBody(new
{
Post = IntParser.Parse(input.PostId, nameof(input.PostId))!.Value,
input.Content
}, JsonConfig.JsonSettings);
var comment = await Client.ExecuteWithHandling<Comment>(request);

return new(comment);
}
Expand All @@ -69,10 +70,8 @@ public async Task<WordPressComment> AddComment([ActionParameter] AddComment requ
[Action("Delete comment", Description = "Delete comment")]
public Task DeleteComment([ActionParameter] CommentRequest comment)
{
var client = new CustomWordpressClient(Creds);

var intCommentId = IntParser.Parse(comment.CommentId, nameof(comment.CommentId))!.Value;
return client.Comments.DeleteAsync(intCommentId);
var request = new WordpressRestRequest($"comments/{comment.CommentId}", Method.Delete, Creds);
return Client.ExecuteWithHandling<Comment>(request);
}

#endregion
Expand Down
45 changes: 22 additions & 23 deletions Apps.Wordpress/Actions/MediaActions.cs
Original file line number Diff line number Diff line change
@@ -1,38 +1,35 @@
using Apps.Wordpress.Api;
using Apps.Wordpress.Invocables;
using Apps.Wordpress.Models.Entities;
using Apps.Wordpress.Models.Requests.Media;
using Apps.Wordpress.Models.Responses.All;
using Blackbird.Applications.Sdk.Common;
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;
using RestSharp;
using WordPressPCL.Models;

namespace Apps.Wordpress.Actions;

[ActionList]
public class MediaActions : BaseInvocable
public class MediaActions : WordpressInvocable
{
private readonly IFileManagementClient _fileManagementClient;

private IEnumerable<AuthenticationCredentialsProvider> Creds =>
InvocationContext.AuthenticationCredentialsProviders;

public MediaActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient)

public MediaActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient)
: base(invocationContext)
{
_fileManagementClient = fileManagementClient;
}

#region Get

[Action("Get all media", Description = "Get all media content")]
public async Task<AllMediaResponse> GetAllMedia()
{
var client = new CustomWordpressClient(Creds);
var medias = await client.Media.GetAllAsync(false, true);
var request = new WordpressRestRequest("media", Method.Get, Creds);
var medias = await Client.Paginate<MediaItem>(request);

return new()
{
Expand All @@ -43,8 +40,8 @@ public async Task<AllMediaResponse> GetAllMedia()
[Action("Get media", Description = "Get media by ID")]
public async Task<WordPressMedia> GetMediaById([ActionParameter] MediaRequest media)
{
var client = new CustomWordpressClient(Creds);
var response = await client.Media.GetByIDAsync(media.MediaId);
var request = new WordpressRestRequest($"media/{media.MediaId}", Method.Get, Creds);
var response = await Client.ExecuteWithHandling<MediaItem>(request);

return new(response);
}
Expand All @@ -54,12 +51,16 @@ public async Task<WordPressMedia> GetMediaById([ActionParameter] MediaRequest me
#region Create

[Action("Upload media", Description = "Upload media")]
public async Task<WordPressMedia> UploadMedia([ActionParameter] UploadMedia request)
public async Task<WordPressMedia> UploadMedia([ActionParameter] UploadMedia input)
{
var client = new CustomWordpressClient(Creds);
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);
var fileStream = await _fileManagementClient.DownloadAsync(input.File);

var request = new WordpressRestRequest("media", Method.Post, Creds);

var fileName = input.FileName ?? input.File.Name;
request.AddFile("file", () => fileStream, fileName);

var media = await Client.ExecuteWithHandling<MediaItem>(request);
return new(media);
}

Expand All @@ -70,10 +71,8 @@ public async Task<WordPressMedia> UploadMedia([ActionParameter] UploadMedia requ
[Action("Delete media", Description = "Delete media")]
public Task DeleteMedia([ActionParameter] MediaRequest media)
{
var client = new CustomWordpressClient(Creds);

var intMediaId = IntParser.Parse(media.MediaId, nameof(media.MediaId))!.Value;
return client.Media.DeleteAsync(intMediaId);
var request = new WordpressRestRequest($"media/{media.MediaId}?force=true", Method.Delete, Creds);
return Client.ExecuteWithHandling(request);
}

#endregion
Expand Down
20 changes: 5 additions & 15 deletions Apps.Wordpress/Actions/PageActions.cs
Original file line number Diff line number Diff line change
@@ -1,43 +1,35 @@
using System.Globalization;
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.Invocables;
using Apps.Wordpress.Models.Dtos;
using Apps.Wordpress.Models.Entities;
using Apps.Wordpress.Models.Polylang;
using Apps.Wordpress.Models.Requests;
using Apps.Wordpress.Models.Requests.Page;
using Apps.Wordpress.Models.Requests.Post;
using Apps.Wordpress.Models.Responses;
using Apps.Wordpress.Models.Responses.All;
using Blackbird.Applications.Sdk.Common;
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 Newtonsoft.Json;
using RestSharp;

namespace Apps.Wordpress.Actions;

[ActionList]
public class PageActions : BaseInvocable
public class PageActions : WordpressInvocable
{
private const string Endpoint = "pages";

private readonly IFileManagementClient _fileManagementClient;

private IEnumerable<AuthenticationCredentialsProvider> Creds =>
InvocationContext.AuthenticationCredentialsProviders;

public PageActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient)
: base(invocationContext)
{
Expand Down Expand Up @@ -207,10 +199,8 @@ private async Task<WordPressItem> ExecuteModification(ModificationRequest input,
[Action("Delete page", Description = "Delete page")]
public Task DeletePage([ActionParameter] PageRequest page)
{
var client = new CustomWordpressClient(Creds);

var intPageId = IntParser.Parse(page.Id, nameof(page.Id))!.Value;
return client.Pages.DeleteAsync(intPageId);
var request = new WordpressRestRequest($"pages/{page.Id}", Method.Delete, Creds);
return Client.ExecuteWithHandling(request);
}

#endregion
Expand Down
49 changes: 18 additions & 31 deletions Apps.Wordpress/Actions/PolylangActions.cs
Original file line number Diff line number Diff line change
@@ -1,42 +1,29 @@
using Apps.Wordpress.Api;
using Apps.Wordpress.Api.RestSharp;
using Apps.Wordpress.Models.Entities;
using Apps.Wordpress.Invocables;
using Apps.Wordpress.Models.Polylang;
using Apps.Wordpress.Models.Responses.All;
using Blackbird.Applications.Sdk.Common;
using Blackbird.Applications.Sdk.Common.Actions;
using Blackbird.Applications.Sdk.Common.Authentication;
using Blackbird.Applications.Sdk.Common.Invocation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Apps.Wordpress.Actions
namespace Apps.Wordpress.Actions;

[ActionList]
public class PolylangActions : WordpressInvocable
{
[ActionList]
public class PolylangActions : BaseInvocable
public PolylangActions(InvocationContext invocationContext) : base(invocationContext)
{
private IEnumerable<AuthenticationCredentialsProvider> Creds => InvocationContext.AuthenticationCredentialsProviders;
}

public PolylangActions(InvocationContext invocationContext) : base(invocationContext)
{
}
[Action("Get languages (P)", Description = "Get all languages configured in Polylang")]
public async Task<LanguagesResponse> GetLanguages()
{
var request = new WordpressRestRequest("/languages", RestSharp.Method.Get, Creds);
var result = await PolylangClient.ExecuteWithHandling<List<Language>>(request);

[Action("Get languages (P)", Description = "Get all languages configured in Polylang")]
public async Task<LanguagesResponse> GetLanguages()
return new()
{
var client = new WordpressRestClient(Creds, "pll/v1");
var request = new WordpressRestRequest("/languages", RestSharp.Method.Get, Creds);
var result = await client.ExecuteWithHandling<List<Language>>(request);

return new()
{
Languages = result,
};
}


Languages = result,
DefaultLanguageCode = result.FirstOrDefault(x => x.IsDefault)?.Locale,
OtherLanguageCodes = result.Where(x => !x.IsDefault).Select(x => x.Locale),
};
}
}
}
20 changes: 7 additions & 13 deletions Apps.Wordpress/Actions/PostActions.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using System.Net.Mime;
using System.Text;
using Apps.Wordpress.Api;
using Apps.Wordpress.Api.RestSharp;
using Apps.Wordpress.Extensions;
using Apps.Wordpress.Invocables;
using Apps.Wordpress.Models.Dtos;
using Apps.Wordpress.Models.Entities;
using Apps.Wordpress.Models.Polylang;
Expand All @@ -13,28 +13,24 @@
using Apps.Wordpress.Models.Responses.All;
using Blackbird.Applications.Sdk.Common;
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;

[ActionList]
public class PostActions : BaseInvocable
public class PostActions : WordpressInvocable
{
private const string Endpoint = "posts";

private readonly IFileManagementClient _fileManagementClient;

private IEnumerable<AuthenticationCredentialsProvider> Creds =>
InvocationContext.AuthenticationCredentialsProviders;

public PostActions(InvocationContext invocationContext, IFileManagementClient fileManagementClient)
: base(invocationContext)
{
Expand Down Expand Up @@ -112,8 +108,8 @@ public async Task<WordPressItem> GetTranslationByPost([ActionParameter] PostRequ
[Action("Get post as HTML", Description = "Get post by id as HTML file")]
public async Task<FileResponse> GetPostByIdAsHtml([ActionParameter] PostRequest input)
{
var client = new CustomWordpressClient(Creds);
var post = await client.Posts.GetByIDAsync(input.Id);
var request = new WordpressRestRequest($"posts/{input.Id}", Method.Get, Creds);
var post = await Client.ExecuteWithHandling<Post>(request);

var html = (post.Title.Rendered, post.Content.Rendered).AsHtml();

Expand Down Expand Up @@ -202,10 +198,8 @@ private async Task<WordPressItem> ExecuteModification(ModificationRequest input,
[Action("Delete post", Description = "Delete post")]
public Task DeletePost([ActionParameter] PostRequest post)
{
var client = new CustomWordpressClient(Creds);

var intPostId = IntParser.Parse(post.Id, nameof(post.Id))!.Value;
return client.Posts.DeleteAsync(intPostId);
var request = new WordpressRestRequest($"posts/{post.Id}", Method.Delete, Creds);
return Client.ExecuteWithHandling(request);
}

#endregion
Expand Down
Loading

0 comments on commit 635e5d9

Please sign in to comment.