diff --git a/ClickUp/Actions/AttachmentActions.cs b/ClickUp/Actions/AttachmentActions.cs index edb8516..76c723b 100644 --- a/ClickUp/Actions/AttachmentActions.cs +++ b/ClickUp/Actions/AttachmentActions.cs @@ -5,11 +5,13 @@ using Apps.ClickUp.Models.Request; using Apps.ClickUp.Models.Request.Attachment; using Apps.ClickUp.Models.Request.Task; +using Apps.ClickUp.Utils; 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 Blackbird.Applications.Sdk.Utils.Extensions.Sdk; using Blackbird.Applications.Sdk.Utils.Extensions.String; +using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; using RestSharp; using Method = RestSharp.Method; @@ -37,7 +39,7 @@ public async Task CreateAttachment( var endpoint = $"{ApiEndpoints.Tasks}/{task.TaskId}{ApiEndpoints.Attachments}".WithQuery(query); if (query.CustomTaskIds is true) - endpoint = endpoint.SetQueryParameter("team_id", task.TeamId); + endpoint = endpoint.SetQueryParameter("team_id", InvocationContext.GetTeamId()); var request = new ClickUpRequest(endpoint, Method.Post, Creds) .AddFile("attachment", () => file, input.FileName ?? input.File.Name); diff --git a/ClickUp/Actions/FolderActions.cs b/ClickUp/Actions/FolderActions.cs index dc7bc99..ef55e8d 100644 --- a/ClickUp/Actions/FolderActions.cs +++ b/ClickUp/Actions/FolderActions.cs @@ -4,8 +4,8 @@ using Apps.ClickUp.Models.Entities; using Apps.ClickUp.Models.Request; using Apps.ClickUp.Models.Request.Folder; -using Apps.ClickUp.Models.Request.Space; using Apps.ClickUp.Models.Response.Folder; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; @@ -16,50 +16,42 @@ namespace Apps.ClickUp.Actions; [ActionList("Folder")] -public class FolderActions : ClickUpActions +public class FolderActions(InvocationContext invocationContext) : ClickUpActions(invocationContext) { - public FolderActions(InvocationContext invocationContext) : base(invocationContext) - { - } - [Action("Search folders", Description = "Get all folders given a specific space")] - public Task GetFolders( - [ActionParameter] SpaceRequest space, - [ActionParameter] ListQuery query) + public Task GetFolders([ActionParameter] ListQuery query) { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}{ApiEndpoints.Folders}"; + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}{ApiEndpoints.Folders}"; var request = new ClickUpRequest(endpoint.WithQuery(query), Method.Get, Creds); - + return Client.ExecuteWithErrorHandling(request); } - + [Action("Create folder", Description = "Create a new folder")] - public Task CreateFolder( - [ActionParameter] SpaceRequest space, - [ActionParameter] CreateFolderRequest input) + public Task CreateFolder([ActionParameter] CreateFolderRequest input) { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}{ApiEndpoints.Folders}"; + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}{ApiEndpoints.Folders}"; var request = new ClickUpRequest(endpoint, Method.Post, Creds) .WithJsonBody(input, JsonConfig.Settings); - + return Client.ExecuteWithErrorHandling(request); } - + [Action("Get folder", Description = "Get specific folder details")] public Task GetFolder([ActionParameter] FolderRequest folder) { var endpoint = $"{ApiEndpoints.Folders}/{folder.FolderId}"; var request = new ClickUpRequest(endpoint, Method.Get, Creds); - + return Client.ExecuteWithErrorHandling(request); } - + [Action("Delete folder", Description = "Delete specific folder")] public Task DeleteFolder([ActionParameter] FolderRequest folder) { var endpoint = $"{ApiEndpoints.Folders}/{folder.FolderId}"; var request = new ClickUpRequest(endpoint, Method.Delete, Creds); - + return Client.ExecuteWithErrorHandling(request); } } \ No newline at end of file diff --git a/ClickUp/Actions/GoalActions.cs b/ClickUp/Actions/GoalActions.cs index 235b802..695c531 100644 --- a/ClickUp/Actions/GoalActions.cs +++ b/ClickUp/Actions/GoalActions.cs @@ -3,67 +3,60 @@ using Apps.ClickUp.Constants; using Apps.ClickUp.Models.Entities; using Apps.ClickUp.Models.Request.Goal; -using Apps.ClickUp.Models.Request.Team; using Apps.ClickUp.Models.Response.Goal; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Utils.Extensions.Http; +using Blackbird.Applications.Sdk.Utils.Extensions.Sdk; using Blackbird.Applications.Sdk.Utils.Extensions.String; using RestSharp; namespace Apps.ClickUp.Actions; [ActionList("Goal")] -public class GoalActions : ClickUpActions +public class GoalActions(InvocationContext invocationContext) : ClickUpActions(invocationContext) { - public GoalActions(InvocationContext invocationContext) : base(invocationContext) - { - } - [Action("Search goals", Description = "Get all goals")] - public Task GetGoals( - [ActionParameter] TeamRequest team, - [ActionParameter] ListGoalsQuery query) + public Task GetGoals([ActionParameter] ListGoalsQuery query) { - var endpoint = $"{ApiEndpoints.Teams}/{team.TeamId}{ApiEndpoints.Goals}"; + var endpoint = $"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}{ApiEndpoints.Goals}"; var request = new ClickUpRequest(endpoint.WithQuery(query), Method.Get, Creds); - + return Client.ExecuteWithErrorHandling(request); } - + [Action("Create goal", Description = "Create a new goal")] - public async Task CreateGoal( - [ActionParameter] TeamRequest team, - [ActionParameter] CreateGoalRequest input) + public async Task CreateGoal([ActionParameter] CreateGoalRequest input) { - var endpoint = $"{ApiEndpoints.Teams}/{team.TeamId}{ApiEndpoints.Goals}"; + var endpoint = $"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}{ApiEndpoints.Goals}"; var request = new ClickUpRequest(endpoint, Method.Post, Creds) .WithJsonBody(input, JsonConfig.Settings); - + var response = await Client.ExecuteWithErrorHandling(request); return response.Goal; } - + [Action("Get goal", Description = "Get specific goal details")] public async Task GetGoal([ActionParameter] GoalRequest goal) { var endpoint = $"{ApiEndpoints.Goals}/{goal.GoalId}"; var request = new ClickUpRequest(endpoint, Method.Get, Creds); - + var response = await Client.ExecuteWithErrorHandling(request); return response.Goal; } - + [Action("Delete goal", Description = "Delete specific goal")] public Task DeleteGoal([ActionParameter] GoalRequest goal) { var endpoint = $"{ApiEndpoints.Goals}/{goal.GoalId}"; var request = new ClickUpRequest(endpoint, Method.Delete, Creds); - + return Client.ExecuteWithErrorHandling(request); } - + [Action("Create key result", Description = "Create goal key result")] public async Task CreateKeyResult( [ActionParameter] GoalRequest goal, @@ -72,7 +65,7 @@ public async Task CreateKeyResult( var endpoint = $"{ApiEndpoints.Goals}/{goal.GoalId}{ApiEndpoints.KeyResults}"; var request = new ClickUpRequest(endpoint, Method.Post, Creds) .WithJsonBody(input, JsonConfig.Settings); - + var response = await Client.ExecuteWithErrorHandling(request); return response.KeyResult; } diff --git a/ClickUp/Actions/ListActions.cs b/ClickUp/Actions/ListActions.cs index 46e78ed..b70bedb 100644 --- a/ClickUp/Actions/ListActions.cs +++ b/ClickUp/Actions/ListActions.cs @@ -7,10 +7,12 @@ using Apps.ClickUp.Models.Request.List; using Apps.ClickUp.Models.Request.Space; using Apps.ClickUp.Models.Response.List; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Utils.Extensions.Http; +using Blackbird.Applications.Sdk.Utils.Extensions.Sdk; using Blackbird.Applications.Sdk.Utils.Extensions.String; using RestSharp; @@ -24,11 +26,9 @@ public ListActions(InvocationContext invocationContext) : base(invocationContext } [Action("Get lists from space", Description = "Get all lists given a specific space")] - public Task GetListsFromSpace( - [ActionParameter] SpaceRequest space, - [ActionParameter] ListQuery query) + public Task GetListsFromSpace([ActionParameter] ListQuery query) { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}{ApiEndpoints.Lists}"; + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}{ApiEndpoints.Lists}"; var request = new ClickUpRequest(endpoint.WithQuery(query), Method.Get, Creds); return Client.ExecuteWithErrorHandling(request); @@ -58,11 +58,9 @@ public Task CreateFolderList( } [Action("Create space list", Description = "Create a new space list")] - public Task CreateSpaceList( - [ActionParameter] SpaceRequest space, - [ActionParameter] CreateListRequest body) + public Task CreateSpaceList([ActionParameter] CreateListRequest body) { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}{ApiEndpoints.Lists}"; + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}{ApiEndpoints.Lists}"; var request = new ClickUpRequest(endpoint, Method.Post, Creds) .WithJsonBody(body, JsonConfig.Settings); diff --git a/ClickUp/Actions/SpaceActions.cs b/ClickUp/Actions/SpaceActions.cs index 9f3208f..29ff788 100644 --- a/ClickUp/Actions/SpaceActions.cs +++ b/ClickUp/Actions/SpaceActions.cs @@ -4,12 +4,13 @@ using Apps.ClickUp.Models.Entities; using Apps.ClickUp.Models.Request; using Apps.ClickUp.Models.Request.Space; -using Apps.ClickUp.Models.Request.Team; using Apps.ClickUp.Models.Response.Space; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Utils.Extensions.Http; +using Blackbird.Applications.Sdk.Utils.Extensions.Sdk; using Blackbird.Applications.Sdk.Utils.Extensions.String; using RestSharp; @@ -23,57 +24,40 @@ public SpaceActions(InvocationContext invocationContext) : base(invocationContex } [Action("Search spaces", Description = "Get all spaces given a specific team")] - public Task GetSpaces( - [ActionParameter] TeamRequest team, - [ActionParameter] ListQuery query) + public Task GetSpaces([ActionParameter] ListQuery query) { - var endpoint = $"{ApiEndpoints.Teams}/{team.TeamId}{ApiEndpoints.Spaces}"; + var endpoint = $"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}{ApiEndpoints.Spaces}"; var request = new ClickUpRequest(endpoint.WithQuery(query), Method.Get, Creds); return Client.ExecuteWithErrorHandling(request); } - + [Action("Create space", Description = "Create a new space")] - public Task CreateSpace( - [ActionParameter] TeamRequest team, - [ActionParameter] CreateSpaceRequest input) + public Task CreateSpace([ActionParameter] CreateSpaceRequest input) { - var endpoint = $"{ApiEndpoints.Teams}/{team.TeamId}{ApiEndpoints.Spaces}"; + var endpoint = $"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}{ApiEndpoints.Spaces}"; var request = new ClickUpRequest(endpoint, Method.Post, Creds) .WithJsonBody(input, JsonConfig.Settings); return Client.ExecuteWithErrorHandling(request); - } - - [Action("Update space", Description = "Update specific space")] - public Task UpdateSpace( - [ActionParameter] SpaceRequest space, - [ActionParameter] UpdateSpaceRequest input) + } + + [Action("Update space", Description = "Update space")] + public Task UpdateSpace([ActionParameter] UpdateSpaceRequest input) { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}"; + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}"; var request = new ClickUpRequest(endpoint, Method.Put, Creds) .WithJsonBody(input, JsonConfig.Settings); - - return Client.ExecuteWithErrorHandling(request); - } - - [Action("Get space", Description = "Get details of a specific space")] - public Task GetSpace( - [ActionParameter] SpaceRequest space) - { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}"; - var request = new ClickUpRequest(endpoint, Method.Get, Creds); return Client.ExecuteWithErrorHandling(request); } - - [Action("Delete space", Description = "Delete specific space")] - public Task DeleteSpace( - [ActionParameter] SpaceRequest space) + + [Action("Get space", Description = "Get details of a space")] + public Task GetSpace() { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}"; - var request = new ClickUpRequest(endpoint, Method.Delete, Creds); + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}"; + var request = new ClickUpRequest(endpoint, Method.Get, Creds); - return Client.ExecuteWithErrorHandling(request); + return Client.ExecuteWithErrorHandling(request); } } \ No newline at end of file diff --git a/ClickUp/Actions/TagActions.cs b/ClickUp/Actions/TagActions.cs index 4da95cb..8cf510c 100644 --- a/ClickUp/Actions/TagActions.cs +++ b/ClickUp/Actions/TagActions.cs @@ -5,10 +5,12 @@ using Apps.ClickUp.Models.Request.Space; using Apps.ClickUp.Models.Request.Tag; using Apps.ClickUp.Models.Response.Tag; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Utils.Extensions.Http; +using Blackbird.Applications.Sdk.Utils.Extensions.Sdk; using RestSharp; namespace Apps.ClickUp.Actions; @@ -21,25 +23,23 @@ public TagActions(InvocationContext invocationContext) : base(invocationContext) } [Action("Search tags", Description = "Get all space tags")] - public Task GetTags([ActionParameter] SpaceRequest space) + public Task GetTags() { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}{ApiEndpoints.Tags}"; + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}{ApiEndpoints.Tags}"; var request = new ClickUpRequest(endpoint, Method.Get, Creds); return Client.ExecuteWithErrorHandling(request); } [Action("Create tag", Description = "Create a new space tag")] - public async Task CreateTag( - [ActionParameter] SpaceRequest space, - [ActionParameter] CreateTagInput input) + public async Task CreateTag([ActionParameter] CreateTagInput input) { - var endpoint = $"{ApiEndpoints.Spaces}/{space.SpaceId}{ApiEndpoints.Tags}"; + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}{ApiEndpoints.Tags}"; var request = new ClickUpRequest(endpoint, Method.Post, Creds) .WithJsonBody(new CreateTagRequest(input), JsonConfig.Settings); await Client.ExecuteWithErrorHandling(request); - var allTags = await GetTags(space); + var allTags = await GetTags(); return allTags.Tags.First(x => x.Name == input.Name); } @@ -47,7 +47,7 @@ public async Task CreateTag( [Action("Delete tag", Description = "Delete specific space tag")] public Task DeleteTag([ActionParameter] TagRequest tag) { - var endpoint = $"{ApiEndpoints.Spaces}/{tag.SpaceId}{ApiEndpoints.Tags}/{tag.TagName}"; + var endpoint = $"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}{ApiEndpoints.Tags}/{tag.TagName}"; var request = new ClickUpRequest(endpoint, Method.Delete, Creds); return Client.ExecuteWithErrorHandling(request); diff --git a/ClickUp/Actions/UserGroupActions.cs b/ClickUp/Actions/UserGroupActions.cs index 8759985..5b83d48 100644 --- a/ClickUp/Actions/UserGroupActions.cs +++ b/ClickUp/Actions/UserGroupActions.cs @@ -3,51 +3,46 @@ using Apps.ClickUp.Constants; using Apps.ClickUp.Models.Entities; using Apps.ClickUp.Models.Request.Group; -using Apps.ClickUp.Models.Request.Team; using Apps.ClickUp.Models.Response.Group; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Actions; using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Utils.Extensions.Http; +using Blackbird.Applications.Sdk.Utils.Extensions.Sdk; using Blackbird.Applications.Sdk.Utils.Extensions.String; using RestSharp; namespace Apps.ClickUp.Actions; [ActionList("User group")] -public class UserGroupActions : ClickUpActions +public class UserGroupActions(InvocationContext invocationContext) : ClickUpActions(invocationContext) { - public UserGroupActions(InvocationContext invocationContext) : base(invocationContext) - { - } - [Action("Search user groups", Description = "Get all user groups")] public Task GetGroups([ActionParameter] ListGroupsQuery query) { var endpoint = ApiEndpoints.Groups; var request = new ClickUpRequest(endpoint.WithQuery(query), Method.Get, Creds); - + return Client.ExecuteWithErrorHandling(request); - } - + } + [Action("Create user group", Description = "Create a new user group")] - public Task CreateGroup( - [ActionParameter] TeamRequest team, - [ActionParameter] CreateGroupRequest input) + public Task CreateGroup([ActionParameter] CreateGroupRequest input) { - var endpoint = $"{ApiEndpoints.Teams}/{team.TeamId}{ApiEndpoints.Groups}"; + var endpoint = $"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}{ApiEndpoints.Groups}"; var request = new ClickUpRequest(endpoint, Method.Post, Creds) .WithJsonBody(input, JsonConfig.Settings); - + return Client.ExecuteWithErrorHandling(request); - } - + } + [Action("Delete user group", Description = "Delete specific user group")] public Task DeleteGroup([ActionParameter] GroupRequest group) { var endpoint = $"{ApiEndpoints.Groups}/{group.GroupId}"; var request = new ClickUpRequest(endpoint, Method.Delete, Creds); - + return Client.ExecuteWithErrorHandling(request); - } + } } \ No newline at end of file diff --git a/ClickUp/Apps.ClickUp.csproj b/ClickUp/Apps.ClickUp.csproj index 8deee14..541c7b0 100644 --- a/ClickUp/Apps.ClickUp.csproj +++ b/ClickUp/Apps.ClickUp.csproj @@ -5,7 +5,7 @@ enable ClickUp Customizable workplace productivity platform - 1.0.8 + 1.0.9 Apps.ClickUp diff --git a/ClickUp/Connections/ConnectionDefinition.cs b/ClickUp/Connections/ConnectionDefinition.cs index 90ca4f9..be2b3ee 100644 --- a/ClickUp/Connections/ConnectionDefinition.cs +++ b/ClickUp/Connections/ConnectionDefinition.cs @@ -15,19 +15,13 @@ public class ConnectionDefinition : IConnectionDefinition ConnectionUsage = ConnectionUsage.Actions, ConnectionProperties = new List() { - new(CredsNames.Token) { DisplayName = "Token", Sensitive=true } + new(CredsNames.Token) { DisplayName = "Token", Sensitive=true }, + new(CredsNames.Team) { DisplayName = "Team ID", Sensitive=false }, + new(CredsNames.Space) { DisplayName = "Space ID", Sensitive=false } } } }; public IEnumerable CreateAuthorizationCredentialsProviders( - Dictionary values) - { - var token = values.First(v => v.Key == CredsNames.Token); - yield return new AuthenticationCredentialsProvider( - AuthenticationCredentialsRequestLocation.Header, - token.Key, - token.Value - ); - } + Dictionary values) => values.Select(x => new AuthenticationCredentialsProvider(x.Key, x.Value)).ToList(); } \ No newline at end of file diff --git a/ClickUp/Constants/CredsNames.cs b/ClickUp/Constants/CredsNames.cs index 7a88446..2e981bd 100644 --- a/ClickUp/Constants/CredsNames.cs +++ b/ClickUp/Constants/CredsNames.cs @@ -3,4 +3,6 @@ public static class CredsNames { public const string Token = "token"; + public const string Team = "team"; + public const string Space = "space"; } \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/FolderCustomFieldDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/FolderCustomFieldDataHandler.cs deleted file mode 100644 index 572615d..0000000 --- a/ClickUp/DataSourceHandlers/Folder/FolderCustomFieldDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.CustomField; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Folder; - -public class FolderCustomFieldDataHandler : FolderDataHandler -{ - public FolderCustomFieldDataHandler(InvocationContext invocationContext, [ActionParameter] CustomFieldRequest request) : - base(invocationContext, request.SpaceId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/FolderListDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/FolderListDataHandler.cs deleted file mode 100644 index 894014e..0000000 --- a/ClickUp/DataSourceHandlers/Folder/FolderListDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.List; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Folder; - -public class FolderListDataHandler : FolderDataHandler -{ - public FolderListDataHandler(InvocationContext invocationContext, [ActionParameter] ListRequest request) : - base(invocationContext, request.SpaceId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/FolderTaskDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/FolderTaskDataHandler.cs deleted file mode 100644 index 9f62583..0000000 --- a/ClickUp/DataSourceHandlers/Folder/FolderTaskDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.Task; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Folder; - -public class FolderTaskDataHandler : FolderDataHandler -{ - public FolderTaskDataHandler(InvocationContext invocationContext, [ActionParameter] TaskRequest request) : - base(invocationContext, request.SpaceId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/PrimaryFolderDataHandler.cs b/ClickUp/DataSourceHandlers/Folder/PrimaryFolderDataHandler.cs deleted file mode 100644 index a626342..0000000 --- a/ClickUp/DataSourceHandlers/Folder/PrimaryFolderDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.Folder; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Folder; - -public class PrimaryFolderDataHandler : FolderDataHandler -{ - public PrimaryFolderDataHandler(InvocationContext invocationContext, [ActionParameter] FolderRequest request) : - base(invocationContext, request.SpaceId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Folder/FolderDataHandler.cs b/ClickUp/DataSourceHandlers/FolderDataHandler.cs similarity index 63% rename from ClickUp/DataSourceHandlers/Folder/FolderDataHandler.cs rename to ClickUp/DataSourceHandlers/FolderDataHandler.cs index a8256d3..47179ac 100644 --- a/ClickUp/DataSourceHandlers/Folder/FolderDataHandler.cs +++ b/ClickUp/DataSourceHandlers/FolderDataHandler.cs @@ -2,28 +2,20 @@ using Apps.ClickUp.Constants; using Apps.ClickUp.Invocables; using Apps.ClickUp.Models.Response.Folder; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common.Dynamic; using Blackbird.Applications.Sdk.Common.Invocation; using RestSharp; -namespace Apps.ClickUp.DataSourceHandlers.Folder; +namespace Apps.ClickUp.DataSourceHandlers; -public class FolderDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +public class FolderDataHandler(InvocationContext invocationContext) + : ClickUpInvocable(invocationContext), IAsyncDataSourceHandler { - private readonly string _spaceId; - - public FolderDataHandler(InvocationContext invocationContext, string spaceId) : base(invocationContext) - { - _spaceId = spaceId; - } - public async Task> GetDataAsync(DataSourceContext context, CancellationToken cancellationToken) { - if (string.IsNullOrEmpty(_spaceId)) - throw new("You should specify Space ID first"); - - var request = new ClickUpRequest($"{ApiEndpoints.Spaces}/{_spaceId}/folder", Method.Get, Creds); + var request = new ClickUpRequest($"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}/folder", Method.Get, Creds); var teams = await Client.ExecuteWithErrorHandling(request); return teams.Folders diff --git a/ClickUp/DataSourceHandlers/GoalDataHandler.cs b/ClickUp/DataSourceHandlers/GoalDataHandler.cs index 429ce08..9f7a9bf 100644 --- a/ClickUp/DataSourceHandlers/GoalDataHandler.cs +++ b/ClickUp/DataSourceHandlers/GoalDataHandler.cs @@ -1,32 +1,21 @@ using Apps.ClickUp.Api; using Apps.ClickUp.Constants; using Apps.ClickUp.Invocables; -using Apps.ClickUp.Models.Request.Goal; using Apps.ClickUp.Models.Response.Goal; -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common.Dynamic; using Blackbird.Applications.Sdk.Common.Invocation; using RestSharp; namespace Apps.ClickUp.DataSourceHandlers; -public class GoalDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +public class GoalDataHandler(InvocationContext invocationContext) + : ClickUpInvocable(invocationContext), IAsyncDataSourceHandler { - private readonly GoalRequest _request; - - public GoalDataHandler(InvocationContext invocationContext, [ActionParameter] GoalRequest request) : base( - invocationContext) - { - _request = request; - } - public async Task> GetDataAsync(DataSourceContext context, CancellationToken cancellationToken) { - if (string.IsNullOrEmpty(_request.TeamId)) - throw new("You should specify Team ID first"); - - var request = new ClickUpRequest($"{ApiEndpoints.Teams}/{_request.TeamId}/goal", Method.Get, Creds); + var request = new ClickUpRequest($"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}/goal", Method.Get, Creds); var teams = await Client.ExecuteWithErrorHandling(request); return teams.Goals diff --git a/ClickUp/DataSourceHandlers/Space/PrimarySpaceDataHandler.cs b/ClickUp/DataSourceHandlers/Space/PrimarySpaceDataHandler.cs deleted file mode 100644 index 14b79b8..0000000 --- a/ClickUp/DataSourceHandlers/Space/PrimarySpaceDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.Space; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Space; - -public class PrimarySpaceDataHandler : SpaceDataHandler -{ - public PrimarySpaceDataHandler(InvocationContext invocationContext, [ActionParameter] SpaceRequest request) : - base(invocationContext, request.TeamId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceCustomFieldDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceCustomFieldDataHandler.cs deleted file mode 100644 index f1811f5..0000000 --- a/ClickUp/DataSourceHandlers/Space/SpaceCustomFieldDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.CustomField; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Space; - -public class SpaceCustomFieldDataHandler : SpaceDataHandler -{ - public SpaceCustomFieldDataHandler(InvocationContext invocationContext, [ActionParameter] CustomFieldRequest request) : - base(invocationContext, request.TeamId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceFolderDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceFolderDataHandler.cs deleted file mode 100644 index 0e97a72..0000000 --- a/ClickUp/DataSourceHandlers/Space/SpaceFolderDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.Folder; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Space; - -public class SpaceFolderDataHandler : SpaceDataHandler -{ - public SpaceFolderDataHandler(InvocationContext invocationContext, [ActionParameter] FolderRequest request) : - base(invocationContext, request.TeamId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceListDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceListDataHandler.cs deleted file mode 100644 index 9808f1f..0000000 --- a/ClickUp/DataSourceHandlers/Space/SpaceListDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.List; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Space; - -public class SpaceListDataHandler : SpaceDataHandler -{ - public SpaceListDataHandler(InvocationContext invocationContext, [ActionParameter] ListRequest request) : - base(invocationContext, request.TeamId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceTagDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceTagDataHandler.cs deleted file mode 100644 index 1ae8bb1..0000000 --- a/ClickUp/DataSourceHandlers/Space/SpaceTagDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.Tag; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Space; - -public class SpaceTagDataHandler : SpaceDataHandler -{ - public SpaceTagDataHandler(InvocationContext invocationContext, [ActionParameter] TagRequest request) : - base(invocationContext, request.TeamId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceTaskDataHandler.cs b/ClickUp/DataSourceHandlers/Space/SpaceTaskDataHandler.cs deleted file mode 100644 index c6d4ce8..0000000 --- a/ClickUp/DataSourceHandlers/Space/SpaceTaskDataHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Apps.ClickUp.Models.Request.Task; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; - -namespace Apps.ClickUp.DataSourceHandlers.Space; - -public class SpaceTaskDataHandler : SpaceDataHandler -{ - public SpaceTaskDataHandler(InvocationContext invocationContext, [ActionParameter] TaskRequest request) : - base(invocationContext, request.TeamId) - { - } -} \ No newline at end of file diff --git a/ClickUp/DataSourceHandlers/Space/SpaceDataHandler.cs b/ClickUp/DataSourceHandlers/SpaceDataHandler.cs similarity index 65% rename from ClickUp/DataSourceHandlers/Space/SpaceDataHandler.cs rename to ClickUp/DataSourceHandlers/SpaceDataHandler.cs index 2acd598..6b1185b 100644 --- a/ClickUp/DataSourceHandlers/Space/SpaceDataHandler.cs +++ b/ClickUp/DataSourceHandlers/SpaceDataHandler.cs @@ -2,28 +2,20 @@ using Apps.ClickUp.Constants; using Apps.ClickUp.Invocables; using Apps.ClickUp.Models.Response.Space; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common.Dynamic; using Blackbird.Applications.Sdk.Common.Invocation; using RestSharp; -namespace Apps.ClickUp.DataSourceHandlers.Space; +namespace Apps.ClickUp.DataSourceHandlers; -public class SpaceDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +public class SpaceDataHandler(InvocationContext invocationContext) + : ClickUpInvocable(invocationContext), IAsyncDataSourceHandler { - private readonly string _teamId; - - public SpaceDataHandler(InvocationContext invocationContext, string teamId) : base(invocationContext) - { - _teamId = teamId; - } - public async Task> GetDataAsync(DataSourceContext context, CancellationToken cancellationToken) { - if (string.IsNullOrEmpty(_teamId)) - throw new("You should specify Team ID first"); - - var request = new ClickUpRequest($"{ApiEndpoints.Teams}/{_teamId}/space", Method.Get, Creds); + var request = new ClickUpRequest($"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}/space", Method.Get, Creds); var teams = await Client.ExecuteWithErrorHandling(request); return teams.Spaces diff --git a/ClickUp/DataSourceHandlers/TagDataHandler.cs b/ClickUp/DataSourceHandlers/TagDataHandler.cs index 428b837..203166a 100644 --- a/ClickUp/DataSourceHandlers/TagDataHandler.cs +++ b/ClickUp/DataSourceHandlers/TagDataHandler.cs @@ -1,32 +1,21 @@ using Apps.ClickUp.Api; using Apps.ClickUp.Constants; using Apps.ClickUp.Invocables; -using Apps.ClickUp.Models.Request.Tag; using Apps.ClickUp.Models.Response.Tag; -using Blackbird.Applications.Sdk.Common; +using Apps.ClickUp.Utils; using Blackbird.Applications.Sdk.Common.Dynamic; using Blackbird.Applications.Sdk.Common.Invocation; using RestSharp; namespace Apps.ClickUp.DataSourceHandlers; -public class TagDataHandler : ClickUpInvocable, IAsyncDataSourceHandler +public class TagDataHandler(InvocationContext invocationContext) + : ClickUpInvocable(invocationContext), IAsyncDataSourceHandler { - private readonly TagRequest _request; - - public TagDataHandler(InvocationContext invocationContext, [ActionParameter] TagRequest request) : base( - invocationContext) - { - _request = request; - } - public async Task> GetDataAsync(DataSourceContext context, CancellationToken cancellationToken) { - if (string.IsNullOrEmpty(_request.SpaceId)) - throw new("You should specify Space ID first"); - - var request = new ClickUpRequest($"{ApiEndpoints.Spaces}/{_request.SpaceId}/tag", Method.Get, Creds); + var request = new ClickUpRequest($"{ApiEndpoints.Spaces}/{InvocationContext.GetSpaceId()}/tag", Method.Get, Creds); var teams = await Client.ExecuteWithErrorHandling(request); return teams.Tags diff --git a/ClickUp/DataSourceHandlers/TeamDataHandler.cs b/ClickUp/DataSourceHandlers/TeamDataHandler.cs deleted file mode 100644 index 866c9a4..0000000 --- a/ClickUp/DataSourceHandlers/TeamDataHandler.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Apps.ClickUp.Api; -using Apps.ClickUp.Constants; -using Apps.ClickUp.Models.Response.Team; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Authentication; -using Blackbird.Applications.Sdk.Common.Dynamic; -using Blackbird.Applications.Sdk.Common.Invocation; -using RestSharp; - -namespace Apps.ClickUp.DataSourceHandlers; - -public class TeamDataHandler : BaseInvocable, IAsyncDataSourceHandler -{ - private IEnumerable Creds => - InvocationContext.AuthenticationCredentialsProviders; - - public TeamDataHandler(InvocationContext invocationContext) : base(invocationContext) - { - } - - public async Task> GetDataAsync(DataSourceContext context, CancellationToken cancellationToken) - { - var client = new ClickUpClient(); - - var request = new ClickUpRequest(ApiEndpoints.Teams, Method.Get, Creds); - var teams = await client.ExecuteWithErrorHandling(request); - - return teams.Teams - .Where(x => context.SearchString is null || - x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) - .Take(20) - .ToDictionary(x => x.Id, x => x.Name); - } -} \ No newline at end of file diff --git a/ClickUp/Models/Request/CustomField/CustomFieldRequest.cs b/ClickUp/Models/Request/CustomField/CustomFieldRequest.cs index bf51222..fc98cef 100644 --- a/ClickUp/Models/Request/CustomField/CustomFieldRequest.cs +++ b/ClickUp/Models/Request/CustomField/CustomFieldRequest.cs @@ -1,7 +1,5 @@ using Apps.ClickUp.DataSourceHandlers; -using Apps.ClickUp.DataSourceHandlers.Folder; using Apps.ClickUp.DataSourceHandlers.List; -using Apps.ClickUp.DataSourceHandlers.Space; using Apps.ClickUp.DataSourceHandlers.Task; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Dynamic; @@ -10,26 +8,18 @@ namespace Apps.ClickUp.Models.Request.CustomField; public class CustomFieldRequest { - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } - - [Display("Space ID")] - [DataSource(typeof(SpaceCustomFieldDataHandler))] - public string SpaceId { get; set; } - [Display("Folder ID")] - [DataSource(typeof(FolderCustomFieldDataHandler))] + [DataSource(typeof(FolderDataHandler))] public string FolderId { get; set; } - + [Display("List ID")] [DataSource(typeof(ListCustomFieldDataHandler))] public string ListId { get; set; } - + [Display("Task ID")] [DataSource(typeof(TaskCustomFieldDataHandler))] public string TaskId { get; set; } - + [Display("Field ID")] [DataSource(typeof(CustomFieldDataHandler))] public string FieldId { get; set; } diff --git a/ClickUp/Models/Request/Folder/FolderRequest.cs b/ClickUp/Models/Request/Folder/FolderRequest.cs index 18e5363..b8ed3e0 100644 --- a/ClickUp/Models/Request/Folder/FolderRequest.cs +++ b/ClickUp/Models/Request/Folder/FolderRequest.cs @@ -1,6 +1,4 @@ using Apps.ClickUp.DataSourceHandlers; -using Apps.ClickUp.DataSourceHandlers.Folder; -using Apps.ClickUp.DataSourceHandlers.Space; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Dynamic; @@ -8,15 +6,7 @@ namespace Apps.ClickUp.Models.Request.Folder; public class FolderRequest { - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } - - [Display("Space ID")] - [DataSource(typeof(SpaceFolderDataHandler))] - public string SpaceId { get; set; } - [Display("Folder ID")] - [DataSource(typeof(PrimaryFolderDataHandler))] + [DataSource(typeof(FolderDataHandler))] public string FolderId { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Goal/GoalRequest.cs b/ClickUp/Models/Request/Goal/GoalRequest.cs index f93cdaa..7cbec90 100644 --- a/ClickUp/Models/Request/Goal/GoalRequest.cs +++ b/ClickUp/Models/Request/Goal/GoalRequest.cs @@ -6,10 +6,6 @@ namespace Apps.ClickUp.Models.Request.Goal; public class GoalRequest { - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } - [Display("Goal ID")] [DataSource(typeof(GoalDataHandler))] public string GoalId { get; set; } diff --git a/ClickUp/Models/Request/Group/ListGroupsQuery.cs b/ClickUp/Models/Request/Group/ListGroupsQuery.cs index 4f468e1..1e30c38 100644 --- a/ClickUp/Models/Request/Group/ListGroupsQuery.cs +++ b/ClickUp/Models/Request/Group/ListGroupsQuery.cs @@ -7,12 +7,7 @@ namespace Apps.ClickUp.Models.Request.Group; public class ListGroupsQuery { - [JsonProperty("team_id")] - [Display("Team ID")] - [DataSource(typeof(TeamDataHandler))] - public string? TeamId { get; set; } - - [JsonProperty("group_ids")] + [JsonProperty("group_ids")] [Display("Group IDs")] public string? GroupIds { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/List/ListRequest.cs b/ClickUp/Models/Request/List/ListRequest.cs index ec98698..55bb816 100644 --- a/ClickUp/Models/Request/List/ListRequest.cs +++ b/ClickUp/Models/Request/List/ListRequest.cs @@ -1,7 +1,5 @@ using Apps.ClickUp.DataSourceHandlers; -using Apps.ClickUp.DataSourceHandlers.Folder; using Apps.ClickUp.DataSourceHandlers.List; -using Apps.ClickUp.DataSourceHandlers.Space; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Dynamic; @@ -9,18 +7,10 @@ namespace Apps.ClickUp.Models.Request.List; public class ListRequest { - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } - - [Display("Space ID")] - [DataSource(typeof(SpaceListDataHandler))] - public string SpaceId { get; set; } - [Display("Folder ID")] - [DataSource(typeof(FolderListDataHandler))] + [DataSource(typeof(FolderDataHandler))] public string FolderId { get; set; } - + [Display("List ID")] [DataSource(typeof(PrimaryListDataHandler))] public string ListId { get; set; } diff --git a/ClickUp/Models/Request/Space/SpaceRequest.cs b/ClickUp/Models/Request/Space/SpaceRequest.cs index 53fa685..fe52856 100644 --- a/ClickUp/Models/Request/Space/SpaceRequest.cs +++ b/ClickUp/Models/Request/Space/SpaceRequest.cs @@ -1,5 +1,4 @@ using Apps.ClickUp.DataSourceHandlers; -using Apps.ClickUp.DataSourceHandlers.Space; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Dynamic; @@ -7,11 +6,7 @@ namespace Apps.ClickUp.Models.Request.Space; public class SpaceRequest { - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } - [Display("Space ID")] - [DataSource(typeof(PrimarySpaceDataHandler))] + [DataSource(typeof(SpaceDataHandler))] public string SpaceId { get; set; } } \ No newline at end of file diff --git a/ClickUp/Models/Request/Tag/TagRequest.cs b/ClickUp/Models/Request/Tag/TagRequest.cs index fe71470..675640e 100644 --- a/ClickUp/Models/Request/Tag/TagRequest.cs +++ b/ClickUp/Models/Request/Tag/TagRequest.cs @@ -1,5 +1,4 @@ using Apps.ClickUp.DataSourceHandlers; -using Apps.ClickUp.DataSourceHandlers.Space; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Dynamic; @@ -7,14 +6,6 @@ namespace Apps.ClickUp.Models.Request.Tag; public class TagRequest { - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } - - [Display("Space ID")] - [DataSource(typeof(SpaceTagDataHandler))] - public string SpaceId { get; set; } - [Display("Tag name")] [DataSource(typeof(TagDataHandler))] public string TagName { get; set; } diff --git a/ClickUp/Models/Request/Task/TaskRequest.cs b/ClickUp/Models/Request/Task/TaskRequest.cs index a9368a5..b0a01cc 100644 --- a/ClickUp/Models/Request/Task/TaskRequest.cs +++ b/ClickUp/Models/Request/Task/TaskRequest.cs @@ -1,7 +1,5 @@ using Apps.ClickUp.DataSourceHandlers; -using Apps.ClickUp.DataSourceHandlers.Folder; using Apps.ClickUp.DataSourceHandlers.List; -using Apps.ClickUp.DataSourceHandlers.Space; using Apps.ClickUp.DataSourceHandlers.Task; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Dynamic; @@ -10,22 +8,14 @@ namespace Apps.ClickUp.Models.Request.Task; public class TaskRequest { - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } - - [Display("Space ID")] - [DataSource(typeof(SpaceTaskDataHandler))] - public string SpaceId { get; set; } - [Display("Folder ID")] - [DataSource(typeof(FolderTaskDataHandler))] + [DataSource(typeof(FolderDataHandler))] public string FolderId { get; set; } - + [Display("List ID")] [DataSource(typeof(ListTaskDataHandler))] public string ListId { get; set; } - + [Display("Task ID")] [DataSource(typeof(PrimaryTaskDataHandler))] public string TaskId { get; set; } diff --git a/ClickUp/Models/Request/Team/TeamRequest.cs b/ClickUp/Models/Request/Team/TeamRequest.cs deleted file mode 100644 index e69b642..0000000 --- a/ClickUp/Models/Request/Team/TeamRequest.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Apps.ClickUp.DataSourceHandlers; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Dynamic; - -namespace Apps.ClickUp.Models.Request.Team; - -public class TeamRequest -{ - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } -} \ No newline at end of file diff --git a/ClickUp/Utils/CredsProvider.cs b/ClickUp/Utils/CredsProvider.cs new file mode 100644 index 0000000..10d7ea4 --- /dev/null +++ b/ClickUp/Utils/CredsProvider.cs @@ -0,0 +1,37 @@ +using Apps.ClickUp.Constants; +using Blackbird.Applications.Sdk.Common.Exceptions; +using Blackbird.Applications.Sdk.Common.Invocation; +using Blackbird.Applications.Sdk.Utils.Extensions.Sdk; + +namespace Apps.ClickUp.Utils; + +public static class CredsProvider +{ + public static string GetTeamId(this InvocationContext ctx) + => ctx.AuthenticationCredentialsProviders.GetRequiredValue(CredsNames.Team, "Team ID"); + + public static string GetSpaceId(this InvocationContext ctx) + => ctx.AuthenticationCredentialsProviders.GetRequiredValue(CredsNames.Space, "Space ID"); + + private static string GetRequiredValue( + this IEnumerable creds, + string credName, + string displayName) + { + try + { + var value = creds.Get(credName)?.Value; + if (string.IsNullOrWhiteSpace(value)) + throw new PluginMisconfigurationException( + $"'{displayName}' is missing in the connection settings. Please re-connect and select '{displayName}'."); + + return value!; + } + catch + { + throw new PluginMisconfigurationException( + $"'{displayName}' is missing in the connection settings. Please re-connect and select '{displayName}'."); + } + } +} + diff --git a/ClickUp/Webhooks/Handlers/BaseWebhookHandler.cs b/ClickUp/Webhooks/Handlers/BaseWebhookHandler.cs index dfc3ae1..c179982 100644 --- a/ClickUp/Webhooks/Handlers/BaseWebhookHandler.cs +++ b/ClickUp/Webhooks/Handlers/BaseWebhookHandler.cs @@ -1,28 +1,22 @@ using Apps.ClickUp.Api; using Apps.ClickUp.Constants; +using Apps.ClickUp.Invocables; +using Apps.ClickUp.Utils; using Apps.ClickUp.Webhooks.Models.Payloads.Additional; using Apps.ClickUp.Webhooks.Models.Request; using Blackbird.Applications.Sdk.Common.Authentication; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; using Blackbird.Applications.Sdk.Utils.Extensions.Http; using RestSharp; namespace Apps.ClickUp.Webhooks.Handlers; -public abstract class BaseWebhookHandler : IWebhookEventHandler +public abstract class BaseWebhookHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest input) : ClickUpInvocable(invocationContext), IWebhookEventHandler { protected abstract string EventType { get; } - private string TeamId { get; } - protected WebhookScopeRequest Scope { get; } - - private ClickUpClient Client { get; } - - public BaseWebhookHandler([WebhookParameter] WebhookScopeRequest input) - { - TeamId = input.TeamId; - Scope = input; - Client = new(); - } + protected WebhookScopeRequest Scope { get; } = input; + private ClickUpClient Client { get; } = new(); public Task SubscribeAsync(IEnumerable creds, Dictionary values) { @@ -34,7 +28,7 @@ public Task SubscribeAsync(IEnumerable creds, ApplyScope(payload, Scope); - var endpoint = $"{ApiEndpoints.Teams}/{TeamId}{ApiEndpoints.Webhooks}"; + var endpoint = $"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}{ApiEndpoints.Webhooks}"; var request = new ClickUpRequest(endpoint, Method.Post, creds) .WithJsonBody(payload, JsonConfig.Settings); @@ -58,13 +52,13 @@ public async Task UnsubscribeAsync(IEnumerable GetAllWebhooks(IEnumerable creds) { - var endpoint = $"{ApiEndpoints.Teams}/{TeamId}{ApiEndpoints.Webhooks}"; + var endpoint = $"{ApiEndpoints.Teams}/{InvocationContext.GetTeamId()}{ApiEndpoints.Webhooks}"; var request = new ClickUpRequest(endpoint, Method.Get, creds); return Client.ExecuteWithErrorHandling(request); } - private static void ApplyScope(AddWebhookRequest payload, WebhookScopeRequest scope) + private void ApplyScope(AddWebhookRequest payload, WebhookScopeRequest scope) { var taskId = Normalize(scope.TaskId); if (!string.IsNullOrWhiteSpace(taskId)) @@ -87,7 +81,7 @@ private static void ApplyScope(AddWebhookRequest payload, WebhookScopeRequest sc return; } - var spaceId = TryParseLong(scope.SpaceId); + var spaceId = TryParseLong(InvocationContext.GetSpaceId()); if (spaceId.HasValue) { payload.SpaceId = spaceId.Value; diff --git a/ClickUp/Webhooks/Handlers/Folder/FolderCreatedHandler.cs b/ClickUp/Webhooks/Handlers/Folder/FolderCreatedHandler.cs index 9896353..885d231 100644 --- a/ClickUp/Webhooks/Handlers/Folder/FolderCreatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Folder/FolderCreatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Folder; @@ -7,7 +7,7 @@ public class FolderCreatedHandler : BaseWebhookHandler { protected override string EventType => "folderCreated"; - public FolderCreatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public FolderCreatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Folder/FolderDeletedHandler.cs b/ClickUp/Webhooks/Handlers/Folder/FolderDeletedHandler.cs index 810f84d..f172412 100644 --- a/ClickUp/Webhooks/Handlers/Folder/FolderDeletedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Folder/FolderDeletedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Folder; @@ -7,7 +7,7 @@ public class FolderDeletedHandler : BaseWebhookHandler { protected override string EventType => "folderDeleted"; - public FolderDeletedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public FolderDeletedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Folder/FolderUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Folder/FolderUpdatedHandler.cs index 378c336..dd30f21 100644 --- a/ClickUp/Webhooks/Handlers/Folder/FolderUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Folder/FolderUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Folder; @@ -7,7 +7,7 @@ public class FolderUpdatedHandler : BaseWebhookHandler { protected override string EventType => "folderUpdated"; - public FolderUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public FolderUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Goal/GoalCreatedHandler.cs b/ClickUp/Webhooks/Handlers/Goal/GoalCreatedHandler.cs index 6530bd9..10480c3 100644 --- a/ClickUp/Webhooks/Handlers/Goal/GoalCreatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Goal/GoalCreatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Goal; @@ -7,7 +7,7 @@ public class GoalCreatedHandler : BaseWebhookHandler { protected override string EventType => "goalCreated"; - public GoalCreatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public GoalCreatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Goal/GoalDeletedHandler.cs b/ClickUp/Webhooks/Handlers/Goal/GoalDeletedHandler.cs index 67e1881..aa76fc8 100644 --- a/ClickUp/Webhooks/Handlers/Goal/GoalDeletedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Goal/GoalDeletedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Goal; @@ -7,7 +7,7 @@ public class GoalDeletedHandler : BaseWebhookHandler { protected override string EventType => "goalDeleted"; - public GoalDeletedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public GoalDeletedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Goal/GoalUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Goal/GoalUpdatedHandler.cs index 4b4d03d..55c7fb7 100644 --- a/ClickUp/Webhooks/Handlers/Goal/GoalUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Goal/GoalUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Goal; @@ -7,7 +7,7 @@ public class GoalUpdatedHandler : BaseWebhookHandler { protected override string EventType => "goalUpdated"; - public GoalUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public GoalUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/KeyResult/KeyResultCreatedHandler.cs b/ClickUp/Webhooks/Handlers/KeyResult/KeyResultCreatedHandler.cs index 8ed69e9..1ed301a 100644 --- a/ClickUp/Webhooks/Handlers/KeyResult/KeyResultCreatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/KeyResult/KeyResultCreatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.KeyResult; @@ -7,7 +7,7 @@ public class KeyResultCreatedHandler : BaseWebhookHandler { protected override string EventType => "keyResultCreated"; - public KeyResultCreatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public KeyResultCreatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/KeyResult/KeyResultDeletedHandler.cs b/ClickUp/Webhooks/Handlers/KeyResult/KeyResultDeletedHandler.cs index c569e2d..4bb88c8 100644 --- a/ClickUp/Webhooks/Handlers/KeyResult/KeyResultDeletedHandler.cs +++ b/ClickUp/Webhooks/Handlers/KeyResult/KeyResultDeletedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.KeyResult; @@ -7,7 +7,7 @@ public class KeyResultDeletedHandler : BaseWebhookHandler { protected override string EventType => "keyResultDeleted"; - public KeyResultDeletedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public KeyResultDeletedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/KeyResult/KeyResultUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/KeyResult/KeyResultUpdatedHandler.cs index 69d1da1..3d060da 100644 --- a/ClickUp/Webhooks/Handlers/KeyResult/KeyResultUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/KeyResult/KeyResultUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.KeyResult; @@ -7,7 +7,7 @@ public class KeyResultUpdatedHandler : BaseWebhookHandler { protected override string EventType => "keyResultUpdated"; - public KeyResultUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public KeyResultUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/List/ListCreatedHandler.cs b/ClickUp/Webhooks/Handlers/List/ListCreatedHandler.cs index 03468a3..3e88b10 100644 --- a/ClickUp/Webhooks/Handlers/List/ListCreatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/List/ListCreatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.List; @@ -7,7 +7,7 @@ public class ListCreatedHandler : BaseWebhookHandler { protected override string EventType => "listCreated"; - public ListCreatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public ListCreatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/List/ListDeletedHandler.cs b/ClickUp/Webhooks/Handlers/List/ListDeletedHandler.cs index 5790478..5d53f7a 100644 --- a/ClickUp/Webhooks/Handlers/List/ListDeletedHandler.cs +++ b/ClickUp/Webhooks/Handlers/List/ListDeletedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.List; @@ -7,7 +7,7 @@ public class ListDeletedHandler : BaseWebhookHandler { protected override string EventType => "listDeleted"; - public ListDeletedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public ListDeletedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/List/ListUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/List/ListUpdatedHandler.cs index 158183a..814528b 100644 --- a/ClickUp/Webhooks/Handlers/List/ListUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/List/ListUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.List; @@ -7,7 +7,7 @@ public class ListUpdatedHandler : BaseWebhookHandler { protected override string EventType => "listUpdated"; - public ListUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public ListUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Space/SpaceCreatedHandler.cs b/ClickUp/Webhooks/Handlers/Space/SpaceCreatedHandler.cs index 1d5842e..0eaccc6 100644 --- a/ClickUp/Webhooks/Handlers/Space/SpaceCreatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Space/SpaceCreatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Space; @@ -7,7 +7,7 @@ public class SpaceCreatedHandler : BaseWebhookHandler { protected override string EventType => "spaceCreated"; - public SpaceCreatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public SpaceCreatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Space/SpaceDeletedHandler.cs b/ClickUp/Webhooks/Handlers/Space/SpaceDeletedHandler.cs index d30ac20..dfbe450 100644 --- a/ClickUp/Webhooks/Handlers/Space/SpaceDeletedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Space/SpaceDeletedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Space; @@ -7,7 +7,7 @@ public class SpaceDeletedHandler : BaseWebhookHandler { protected override string EventType => "spaceDeleted"; - public SpaceDeletedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public SpaceDeletedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Space/SpaceUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Space/SpaceUpdatedHandler.cs index e1fd59b..da8c6a9 100644 --- a/ClickUp/Webhooks/Handlers/Space/SpaceUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Space/SpaceUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Space; @@ -7,7 +7,7 @@ public class SpaceUpdatedHandler : BaseWebhookHandler { protected override string EventType => "spaceUpdated"; - public SpaceUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public SpaceUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/FolderWebhookDataHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/FolderWebhookDataHandler.cs deleted file mode 100644 index 4474e09..0000000 --- a/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/FolderWebhookDataHandler.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Apps.ClickUp.DataSourceHandlers.Folder; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; -using Blackbird.Applications.Sdk.Common.Webhooks; - -namespace Apps.ClickUp.Webhooks.Handlers.Tasks.DataHandlers -{ - public class FolderWebhookDataHandler : FolderDataHandler - { - public FolderWebhookDataHandler(InvocationContext invocationContext, [ActionParameter] WebhookScopeRequest request) : - base(invocationContext, request.SpaceId) - { - - } - } -} diff --git a/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/SpaceWebhookDataHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/SpaceWebhookDataHandler.cs deleted file mode 100644 index bc7485e..0000000 --- a/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/SpaceWebhookDataHandler.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Apps.ClickUp.DataSourceHandlers.Space; -using Blackbird.Applications.Sdk.Common; -using Blackbird.Applications.Sdk.Common.Invocation; -using Blackbird.Applications.Sdk.Common.Webhooks; - -namespace Apps.ClickUp.Webhooks.Handlers.Tasks.DataHandlers -{ - public class SpaceWebhookDataHandler : SpaceDataHandler - { - public SpaceWebhookDataHandler(InvocationContext invocationContext, [ActionParameter] WebhookScopeRequest request) : - base(invocationContext, request.TeamId) - { - - } - } -} diff --git a/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/TaskWebhookDataHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/TaskWebhookDataHandler.cs index cfe7bdc..6cbc127 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/TaskWebhookDataHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/DataHandlers/TaskWebhookDataHandler.cs @@ -1,5 +1,4 @@ using Apps.ClickUp.DataSourceHandlers.Task; -using Apps.ClickUp.Models.Request.Task; using Blackbird.Applications.Sdk.Common; using Blackbird.Applications.Sdk.Common.Invocation; diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskAssigneeUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskAssigneeUpdatedHandler.cs index f620352..9c00489 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskAssigneeUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskAssigneeUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskAssigneeUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskAssigneeUpdated"; - public TaskAssigneeUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskAssigneeUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskCommentPostedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskCommentPostedHandler.cs index 8fbb4a1..56c9fc6 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskCommentPostedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskCommentPostedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskCommentPostedHandler : BaseWebhookHandler { protected override string EventType => "taskCommentPosted"; - public TaskCommentPostedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskCommentPostedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskCommentUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskCommentUpdatedHandler.cs index 3074c00..ea754b3 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskCommentUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskCommentUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskCommentUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskCommentUpdated"; - public TaskCommentUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskCommentUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskCreatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskCreatedHandler.cs index 273749f..232c346 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskCreatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskCreatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskCreatedHandler : BaseWebhookHandler { protected override string EventType => "taskCreated"; - public TaskCreatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskCreatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskDeletedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskDeletedHandler.cs index 501965b..f336406 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskDeletedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskDeletedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskDeletedHandler : BaseWebhookHandler { protected override string EventType => "taskDeleted"; - public TaskDeletedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskDeletedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskDueDateUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskDueDateUpdatedHandler.cs index 9cd912e..d07857a 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskDueDateUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskDueDateUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskDueDateUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskDueDateUpdated"; - public TaskDueDateUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskDueDateUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskMovedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskMovedHandler.cs index 804d9d1..6f8e36e 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskMovedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskMovedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskMovedHandler : BaseWebhookHandler { protected override string EventType => "taskMoved"; - public TaskMovedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskMovedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskPriorityUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskPriorityUpdatedHandler.cs index 6f26b73..9e58235 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskPriorityUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskPriorityUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskPriorityUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskPriorityUpdated"; - public TaskPriorityUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskPriorityUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskStatusUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskStatusUpdatedHandler.cs index d7c362f..c1c0dc7 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskStatusUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskStatusUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskStatusUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskStatusUpdated"; - public TaskStatusUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskStatusUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskTagUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskTagUpdatedHandler.cs index 58c1f47..75270ed 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskTagUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskTagUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskTagUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskTagUpdated"; - public TaskTagUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskTagUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskTimeEstimateUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskTimeEstimateUpdatedHandler.cs index 186aa3a..f352cb1 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskTimeEstimateUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskTimeEstimateUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskTimeEstimateUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskTimeEstimateUpdated"; - public TaskTimeEstimateUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskTimeEstimateUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskTimeTrackedUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskTimeTrackedUpdatedHandler.cs index a1818a0..6d31513 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskTimeTrackedUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskTimeTrackedUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskTimeTrackedUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskTimeTrackedUpdated"; - public TaskTimeTrackedUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskTimeTrackedUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/Tasks/TaskUpdatedHandler.cs b/ClickUp/Webhooks/Handlers/Tasks/TaskUpdatedHandler.cs index 3261f64..c9dfa72 100644 --- a/ClickUp/Webhooks/Handlers/Tasks/TaskUpdatedHandler.cs +++ b/ClickUp/Webhooks/Handlers/Tasks/TaskUpdatedHandler.cs @@ -1,4 +1,4 @@ -using Apps.ClickUp.Models.Request.Team; +using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.Sdk.Common.Webhooks; namespace Apps.ClickUp.Webhooks.Handlers.Tasks; @@ -7,7 +7,7 @@ public class TaskUpdatedHandler : BaseWebhookHandler { protected override string EventType => "taskUpdated"; - public TaskUpdatedHandler([WebhookParameter] WebhookScopeRequest team) : base(team) + public TaskUpdatedHandler(InvocationContext invocationContext, [WebhookParameter] WebhookScopeRequest team) : base(invocationContext, team) { } } \ No newline at end of file diff --git a/ClickUp/Webhooks/Handlers/WebhookScopeRequest.cs b/ClickUp/Webhooks/Handlers/WebhookScopeRequest.cs index f2d058e..1994428 100644 --- a/ClickUp/Webhooks/Handlers/WebhookScopeRequest.cs +++ b/ClickUp/Webhooks/Handlers/WebhookScopeRequest.cs @@ -7,16 +7,8 @@ namespace Apps.ClickUp.Webhooks.Handlers { public class WebhookScopeRequest { - [Display("Team")] - [DataSource(typeof(TeamDataHandler))] - public string TeamId { get; set; } - - [Display("Space ID")] - [DataSource(typeof(SpaceWebhookDataHandler))] - public string? SpaceId { get; set; } - [Display("Folder ID")] - [DataSource(typeof(FolderWebhookDataHandler))] + [DataSource(typeof(FolderDataHandler))] public string? FolderId { get; set; } [Display("List ID")] diff --git a/ClickUp/image/clickup-space-id.png b/ClickUp/image/clickup-space-id.png new file mode 100644 index 0000000..cf5a59a Binary files /dev/null and b/ClickUp/image/clickup-space-id.png differ diff --git a/ClickUp/image/clickup-team-id.png b/ClickUp/image/clickup-team-id.png new file mode 100644 index 0000000..f5b8197 Binary files /dev/null and b/ClickUp/image/clickup-team-id.png differ diff --git a/README.md b/README.md index 6a85766..915cc86 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,10 @@ ClickUp project management software that allows you to plan, track and collabora 4. Go to ClickUp personal settings and click _Apps_. 5. Click _Generate_ under the _API Token_ label 6. Copy API token and paste it to the appropriate field in the BlackBird +7. Input Team ID you are working under. You can find it in your URL + ![example1](ClickUp/image/clickup-team-id.png) +8. Input Space ID you are working under. You can find it in your URL + ![example2](ClickUp/image/clickup-space-id.png) 7. Click _Connect_. 8. Confirm that the connection has appeared and the status is _Connected_. @@ -47,7 +51,7 @@ ClickUp project management software that allows you to plan, track and collabora ### Spaces - **Search spaces** returns all spaces of specified `team`. -- **Get/create/update/delete space** +- **Get/create/update space** ### Tags diff --git a/Tests.ClickUp/DataHandlerTests.cs b/Tests.ClickUp/DataHandlerTests.cs index bae2333..e1b2071 100644 --- a/Tests.ClickUp/DataHandlerTests.cs +++ b/Tests.ClickUp/DataHandlerTests.cs @@ -1,4 +1,7 @@ -using Tests.ClickUp.Base; +using Apps.ClickUp.DataSourceHandlers; +using Apps.ClickUp.DataSourceHandlers.List; +using Apps.ClickUp.Models.Request.List; +using Tests.ClickUp.Base; namespace Tests.ClickUp; @@ -6,8 +9,78 @@ namespace Tests.ClickUp; public class DataHandlerTests : TestBase { [TestMethod] - public async Task _works() + public async Task FolderDataHandler_works() { + var handler = new FolderDataHandler(InvocationContext); + var result = await handler.GetDataAsync(new() { }, CancellationToken.None); + + foreach (var item in result) + { + Console.WriteLine($"Folder name {item.Key} - {item.Value}"); + } + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task ListCustomFieldDataHandler_works() + { + var handler = new ListCustomFieldDataHandler(InvocationContext, new Apps.ClickUp.Models.Request.CustomField.CustomFieldRequest { FolderId = "901513903877" }); + + var result = await handler.GetDataAsync(new() { }, CancellationToken.None); + + foreach (var item in result) + { + Console.WriteLine($"Folder name {item.Key} - {item.Value}"); + } + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task ListDataHandler_works() + { + var handler = new ListDataHandler(InvocationContext, "901513903877"); + + var result = await handler.GetDataAsync(new() { }, CancellationToken.None); + + foreach (var item in result) + { + Console.WriteLine($"Folder name {item.Key} - {item.Value}"); + } + + Assert.IsNotNull(result); } + + [TestMethod] + public async Task ListTaskDataHandler_works() + { + var handler = new ListTaskDataHandler(InvocationContext, new Apps.ClickUp.Models.Request.Task.TaskRequest { FolderId = "901513903877" }); + + var result = await handler.GetDataAsync(new() { }, CancellationToken.None); + + foreach (var item in result) + { + Console.WriteLine($"Folder name {item.Key} - {item.Value}"); + } + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task PrimaryListDataHandler_works() + { + var handler = new PrimaryListDataHandler(InvocationContext, new ListRequest { FolderId = "901513903877" }); + + var result = await handler.GetDataAsync(new() { }, CancellationToken.None); + + foreach (var item in result) + { + Console.WriteLine($"Folder name {item.Key} - {item.Value}"); + } + + Assert.IsNotNull(result); + } + } diff --git a/Tests.ClickUp/GoalsTests.cs b/Tests.ClickUp/GoalsTests.cs new file mode 100644 index 0000000..36f9dcb --- /dev/null +++ b/Tests.ClickUp/GoalsTests.cs @@ -0,0 +1,21 @@ +using Apps.ClickUp.Models.Request.Goal; +using Tests.ClickUp.Base; + +namespace Tests.ClickUp +{ + [TestClass] + public class GoalsTests : TestBase + { + [TestMethod] + public async Task GetGoals_works() + { + var action = new Apps.ClickUp.Actions.GoalActions(InvocationContext); + + var result = await action.GetGoals(new ListGoalsQuery { }); + + Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(result)); + + Assert.IsNotNull(result); + } + } +} diff --git a/Tests.ClickUp/appsettings.json.example b/Tests.ClickUp/appsettings.json.example index fc43ad3..e0968eb 100644 --- a/Tests.ClickUp/appsettings.json.example +++ b/Tests.ClickUp/appsettings.json.example @@ -1,6 +1,8 @@ { "ConnectionDefinition": { - "token": "" + "token": "", + "team": "", + "space": "" }, "TestFolder": "TestFiles" } \ No newline at end of file