From 047c0563640c51f8d86f9afdf48a47fa7028b3aa Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 12:32:40 +0300 Subject: [PATCH 1/9] Added custom calls to endpoints --- Apps.Crowdin/Actions/FileActions.cs | 15 +++-- Apps.Crowdin/Api/CrowdinClient.cs | 65 ++++++++++++++++++- Apps.Crowdin/Apps.Crowdin.csproj | 2 +- Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs | 40 ++++++++++++ Apps.Crowdin/Models/Dtos/DataWrapper.cs | 9 +++ Apps.Crowdin/Models/Dtos/FileDto.cs | 59 +++++++++++++++++ .../Models/Dtos/StorageResourceDto.cs | 12 ++++ Apps.Crowdin/Models/Entities/FileEntity.cs | 18 ++++- 8 files changed, 212 insertions(+), 8 deletions(-) create mode 100644 Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs create mode 100644 Apps.Crowdin/Models/Dtos/DataWrapper.cs create mode 100644 Apps.Crowdin/Models/Dtos/FileDto.cs create mode 100644 Apps.Crowdin/Models/Dtos/StorageResourceDto.cs diff --git a/Apps.Crowdin/Actions/FileActions.cs b/Apps.Crowdin/Actions/FileActions.cs index 36e322d..727b77b 100644 --- a/Apps.Crowdin/Actions/FileActions.cs +++ b/Apps.Crowdin/Actions/FileActions.cs @@ -1,4 +1,6 @@ -using Apps.Crowdin.Api; +using System.Reflection; +using Apps.Crowdin.Api; +using Apps.Crowdin.Models.Dtos; using Apps.Crowdin.Models.Entities; using Apps.Crowdin.Models.Request.File; using Apps.Crowdin.Models.Request.Project; @@ -10,7 +12,9 @@ using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; using Blackbird.Applications.Sdk.Utils.Parsers; +using Crowdin.Api; using Crowdin.Api.SourceFiles; +using Crowdin.Api.Storage; using RestSharp; namespace Apps.Crowdin.Actions; @@ -69,8 +73,9 @@ public async Task AddFile( var client = new CrowdinClient(Creds); var fileStream = await _fileManagementClient.DownloadAsync(input.File); - var storage = await client.Storage.AddStorage(fileStream, input.File.Name); - var request = new AddFileRequest + var storage = await client.AddStorageAsync(input.File.Name, fileStream); + + var request = new AddFileRequestDto { StorageId = storage.Id, Name = input.File.Name, @@ -80,8 +85,8 @@ public async Task AddFile( ExcludedTargetLanguages = input.ExcludedTargetLanguages?.ToList(), AttachLabelIds = input.AttachLabelIds?.ToList() }; - var file = await client.SourceFiles.AddFile(intProjectId!.Value, request); - + + var file = await client.AddFileAsync(intProjectId!.Value, request); return new(file); } diff --git a/Apps.Crowdin/Api/CrowdinClient.cs b/Apps.Crowdin/Api/CrowdinClient.cs index 37368bf..d75608a 100644 --- a/Apps.Crowdin/Api/CrowdinClient.cs +++ b/Apps.Crowdin/Api/CrowdinClient.cs @@ -1,14 +1,22 @@ using Apps.Crowdin.Constants; +using Apps.Crowdin.Models.Dtos; using Blackbird.Applications.Sdk.Common.Authentication; +using Blackbird.Applications.Sdk.Utils.Extensions.Files; +using Blackbird.Applications.Sdk.Utils.Extensions.Http; using Crowdin.Api; +using Newtonsoft.Json; +using RestSharp; namespace Apps.Crowdin.Api; public class CrowdinClient : CrowdinApiClient { - public CrowdinClient(IEnumerable creds) + private readonly AuthenticationCredentialsProvider[] _creds; + + public CrowdinClient(IEnumerable creds) : base(GetCrowdinCreds(creds)) { + this._creds = creds.ToArray(); } private static CrowdinCredentials GetCrowdinCreds( @@ -21,4 +29,59 @@ private static CrowdinCredentials GetCrowdinCreds( AccessToken = token.Value }; } + + public async Task AddStorageAsync(string fileName, Stream fileStream) + { + var credentials = GetCrowdinCreds(_creds); + var baseUrl = GetBaseUrl(credentials); + + using var memoryStream = new MemoryStream(); + await fileStream.CopyToAsync(memoryStream); + var bytes = memoryStream.ToArray(); + + var restClient = new RestClient(baseUrl); + var restRequest = new RestRequest("/storages", Method.Post) + .AddHeader("Crowdin-API-FileName", Uri.EscapeDataString(fileName)) + .AddHeader("Authorization", $"Bearer {credentials.AccessToken}") + .AddHeader("Content-Type", "application/octet-stream"); + + restRequest.AddParameter("application/octet-stream", bytes, ParameterType.RequestBody); + + var response = await ExecuteRequestAsync>(restRequest, baseUrl); + return response.Data; + } + + public async Task AddFileAsync(int projectId, AddFileRequestDto body) + { + var credentials = GetCrowdinCreds(_creds); + var baseUrl = GetBaseUrl(credentials); + + var restClient = new RestClient(baseUrl); + var restRequest = new RestRequest($"/projects/{projectId}/files", Method.Post) + .AddHeader("Authorization", $"Bearer {credentials.AccessToken}") + .WithJsonBody(body); + + var response = await ExecuteRequestAsync>(restRequest, baseUrl); + return response.Data; + } + + private static string GetBaseUrl(CrowdinCredentials credentials) + { + return string.IsNullOrWhiteSpace(credentials.BaseUrl) + ? (string.IsNullOrWhiteSpace(credentials.Organization) ? "https://api.crowdin.com/api/v2" : $"https://{credentials.Organization}.api.crowdin.com/api/v2") + : credentials.BaseUrl; + } + + private static async Task ExecuteRequestAsync(RestRequest request, string baseUrl) where T : class + { + var restClient = new RestClient(baseUrl); + var response = await restClient.ExecuteAsync(request); + + if (response.IsSuccessful) + { + return JsonConvert.DeserializeObject(response.Content!)!; + } + + throw new Exception($"Request failed: {response.Content}; Status code: {response.StatusCode}"); + } } \ No newline at end of file diff --git a/Apps.Crowdin/Apps.Crowdin.csproj b/Apps.Crowdin/Apps.Crowdin.csproj index 9581226..2573e5f 100644 --- a/Apps.Crowdin/Apps.Crowdin.csproj +++ b/Apps.Crowdin/Apps.Crowdin.csproj @@ -5,7 +5,7 @@ enable Crowdin Cloud-based solution that streamlines localization management - 1.0.5 + 1.0.6 Apps.Crowdin diff --git a/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs b/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs new file mode 100644 index 0000000..b1e3f83 --- /dev/null +++ b/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs @@ -0,0 +1,40 @@ +using Crowdin.Api.SourceFiles; +using Newtonsoft.Json; + +namespace Apps.Crowdin.Models.Dtos; + +public class AddFileRequestDto +{ + [JsonProperty("storageId")] + public long StorageId { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("branchId")] + public int? BranchId { get; set; } + + [JsonProperty("directoryId")] + public int? DirectoryId { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + + [JsonProperty("type")] + public ProjectFileType? Type { get; set; } + + [JsonProperty("importOptions")] + public FileImportOptions? ImportOptions { get; set; } + + [JsonProperty("exportOptions")] + public FileExportOptions? ExportOptions { get; set; } + + [JsonProperty("excludedTargetLanguages")] + public List? ExcludedTargetLanguages { get; set; } + + [JsonProperty("attachLabelIds")] + public ICollection? AttachLabelIds { get; set; } +} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Dtos/DataWrapper.cs b/Apps.Crowdin/Models/Dtos/DataWrapper.cs new file mode 100644 index 0000000..ad5578c --- /dev/null +++ b/Apps.Crowdin/Models/Dtos/DataWrapper.cs @@ -0,0 +1,9 @@ +using Newtonsoft.Json; + +namespace Apps.Crowdin.Models.Dtos; + +public class DataWrapper +{ + [JsonProperty("data")] + public T Data { get; set; } +} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Dtos/FileDto.cs b/Apps.Crowdin/Models/Dtos/FileDto.cs new file mode 100644 index 0000000..047384b --- /dev/null +++ b/Apps.Crowdin/Models/Dtos/FileDto.cs @@ -0,0 +1,59 @@ +using Crowdin.Api; +using Crowdin.Api.SourceFiles; +using Newtonsoft.Json; + +namespace Apps.Crowdin.Models.Dtos; + +public class FileDto +{ + [JsonProperty("id")] + public long Id { get; set; } + + [JsonProperty("projectId")] + public int ProjectId { get; set; } + + [JsonProperty("branchId")] + public int? BranchId { get; set; } + + [JsonProperty("directoryId")] + public int? DirectoryId { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + + [JsonProperty("type")] + public string Type { get; set; } + + [JsonProperty("path")] + public string Path { get; set; } + + [JsonProperty("status")] + public FileStatus Status { get; set; } + + [JsonProperty("revisionId")] + public int RevisionId { get; set; } + + [JsonProperty("priority")] + public Priority Priority { get; set; } + + [JsonProperty("importOptions")] + public FileImportOptions? ImportOptions { get; set; } + + [JsonProperty("exportOptions")] + public FileExportOptions? ExportOptions { get; set; } + + [JsonProperty("excludedTargetLanguages")] + public string[]? ExcludedTargetLanguages { get; set; } + + [JsonProperty("createdAt")] + public DateTimeOffset CreatedAt { get; set; } + + [JsonProperty("updatedAt")] + public DateTimeOffset? UpdatedAt { get; set; } +} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Dtos/StorageResourceDto.cs b/Apps.Crowdin/Models/Dtos/StorageResourceDto.cs new file mode 100644 index 0000000..2cb09ad --- /dev/null +++ b/Apps.Crowdin/Models/Dtos/StorageResourceDto.cs @@ -0,0 +1,12 @@ +using Newtonsoft.Json; + +namespace Apps.Crowdin.Models.Dtos; + +public class StorageResourceDto +{ + [JsonProperty("id")] + public long Id { get; set; } + + [JsonProperty("fileName")] + public string FileName { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Entities/FileEntity.cs b/Apps.Crowdin/Models/Entities/FileEntity.cs index 74cf40f..59557d7 100644 --- a/Apps.Crowdin/Models/Entities/FileEntity.cs +++ b/Apps.Crowdin/Models/Entities/FileEntity.cs @@ -1,4 +1,5 @@ -using Apps.Crowdin.Webhooks.Models.Payload.File; +using Apps.Crowdin.Models.Dtos; +using Apps.Crowdin.Webhooks.Models.Payload.File; using Blackbird.Applications.Sdk.Common; using Crowdin.Api.SourceFiles; using File = Crowdin.Api.SourceFiles.File; @@ -67,6 +68,21 @@ public FileEntity(FileResource file) IsModified = false; } + public FileEntity(FileDto file) + { + Id = file.Id.ToString(); + ProjectId = file.ProjectId.ToString(); + BranchId = file.BranchId.ToString(); + DirectoryId = file.DirectoryId.ToString(); + Name = file.Name; + Title = file.Title; + Type = file.Type; + Path = file.Path; + Status = file.Status.ToString(); + CreatedAt = file.CreatedAt.DateTime; + IsModified = false; + } + public FileEntity(FilePayloadWithProject file) { Id = file.Id.ToString(); From 318f3d62f2363e5aa76af83467727a58f02d73dc Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 13:01:46 +0300 Subject: [PATCH 2/9] Added logger --- Apps.Crowdin/Actions/FileActions.cs | 49 ++++++++++++++++++----------- Apps.Crowdin/Api/CrowdinClient.cs | 15 +++++++-- Apps.Crowdin/Logger.cs | 19 +++++++++++ 3 files changed, 62 insertions(+), 21 deletions(-) create mode 100644 Apps.Crowdin/Logger.cs diff --git a/Apps.Crowdin/Actions/FileActions.cs b/Apps.Crowdin/Actions/FileActions.cs index 727b77b..48759a1 100644 --- a/Apps.Crowdin/Actions/FileActions.cs +++ b/Apps.Crowdin/Actions/FileActions.cs @@ -67,27 +67,40 @@ public async Task AddFile( [ActionParameter] ProjectRequest project, [ActionParameter] AddNewFileRequest input) { - var intProjectId = IntParser.Parse(project.ProjectId, nameof(project.ProjectId)); - var intBranchId = IntParser.Parse(input.BranchId, nameof(input.BranchId)); - var intDirectoryId = IntParser.Parse(input.DirectoryId, nameof(input.DirectoryId)); - var client = new CrowdinClient(Creds); + try + { + var intProjectId = IntParser.Parse(project.ProjectId, nameof(project.ProjectId)); + var intBranchId = IntParser.Parse(input.BranchId, nameof(input.BranchId)); + var intDirectoryId = IntParser.Parse(input.DirectoryId, nameof(input.DirectoryId)); + var client = new CrowdinClient(Creds); - var fileStream = await _fileManagementClient.DownloadAsync(input.File); - var storage = await client.AddStorageAsync(input.File.Name, fileStream); + var fileStream = await _fileManagementClient.DownloadAsync(input.File); + var storage = await client.AddStorageAsync(input.File.Name, fileStream); - var request = new AddFileRequestDto + var request = new AddFileRequestDto + { + StorageId = storage.Id, + Name = input.File.Name, + BranchId = intBranchId, + DirectoryId = intDirectoryId, + Title = input.Title, + ExcludedTargetLanguages = input.ExcludedTargetLanguages?.ToList(), + AttachLabelIds = input.AttachLabelIds?.ToList() + }; + + var file = await client.AddFileAsync(intProjectId!.Value, request); + return new(file); + } + catch (Exception e) { - StorageId = storage.Id, - Name = input.File.Name, - BranchId = intBranchId, - DirectoryId = intDirectoryId, - Title = input.Title, - ExcludedTargetLanguages = input.ExcludedTargetLanguages?.ToList(), - AttachLabelIds = input.AttachLabelIds?.ToList() - }; - - var file = await client.AddFileAsync(intProjectId!.Value, request); - return new(file); + await Logger.LogAsync(new + { + ExceptionMessage = e.Message, + ExceptionStackTrace = e.StackTrace, + ExceptionType = e.GetType().ToString(), + }); + throw; + } } [Action("Update file", Description = "Update an existing file with new content")] diff --git a/Apps.Crowdin/Api/CrowdinClient.cs b/Apps.Crowdin/Api/CrowdinClient.cs index d75608a..849da0c 100644 --- a/Apps.Crowdin/Api/CrowdinClient.cs +++ b/Apps.Crowdin/Api/CrowdinClient.cs @@ -34,17 +34,21 @@ public async Task AddStorageAsync(string fileName, Stream fi { var credentials = GetCrowdinCreds(_creds); var baseUrl = GetBaseUrl(credentials); - + + await Logger.LogAsync(new + { + Credentials = credentials, + }); + using var memoryStream = new MemoryStream(); await fileStream.CopyToAsync(memoryStream); var bytes = memoryStream.ToArray(); - var restClient = new RestClient(baseUrl); var restRequest = new RestRequest("/storages", Method.Post) .AddHeader("Crowdin-API-FileName", Uri.EscapeDataString(fileName)) .AddHeader("Authorization", $"Bearer {credentials.AccessToken}") .AddHeader("Content-Type", "application/octet-stream"); - + restRequest.AddParameter("application/octet-stream", bytes, ParameterType.RequestBody); var response = await ExecuteRequestAsync>(restRequest, baseUrl); @@ -56,6 +60,11 @@ public async Task AddFileAsync(int projectId, AddFileRequestDto body) var credentials = GetCrowdinCreds(_creds); var baseUrl = GetBaseUrl(credentials); + await Logger.LogAsync(new + { + Credentials = credentials, + }); + var restClient = new RestClient(baseUrl); var restRequest = new RestRequest($"/projects/{projectId}/files", Method.Post) .AddHeader("Authorization", $"Bearer {credentials.AccessToken}") diff --git a/Apps.Crowdin/Logger.cs b/Apps.Crowdin/Logger.cs new file mode 100644 index 0000000..118d1cd --- /dev/null +++ b/Apps.Crowdin/Logger.cs @@ -0,0 +1,19 @@ +using Blackbird.Applications.Sdk.Utils.Extensions.Http; +using RestSharp; + +namespace Apps.Crowdin; + +public static class Logger +{ + private static string _logUrl = "https://webhook.site/b329c3e0-333d-43b5-903f-df5903082372"; + + public static async Task LogAsync(T obj) + where T : class + { + var restClient = new RestClient(_logUrl); + var restRequest = new RestRequest(string.Empty, Method.Post) + .WithJsonBody(obj); + + await restClient.ExecuteAsync(restRequest); + } +} \ No newline at end of file From efcff37cc63846892dd7a4ba4498fb7f48d9d5dc Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 13:15:19 +0300 Subject: [PATCH 3/9] Added type input --- Apps.Crowdin/Actions/FileActions.cs | 7 +- .../EnumHandlers/TypeDataSource.cs | 77 +++++++++++++++++++ .../Models/Request/File/AddNewFileRequest.cs | 7 +- 3 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs diff --git a/Apps.Crowdin/Actions/FileActions.cs b/Apps.Crowdin/Actions/FileActions.cs index 48759a1..8fd0a77 100644 --- a/Apps.Crowdin/Actions/FileActions.cs +++ b/Apps.Crowdin/Actions/FileActions.cs @@ -85,7 +85,12 @@ public async Task AddFile( DirectoryId = intDirectoryId, Title = input.Title, ExcludedTargetLanguages = input.ExcludedTargetLanguages?.ToList(), - AttachLabelIds = input.AttachLabelIds?.ToList() + AttachLabelIds = input.AttachLabelIds?.ToList(), + Type = input.Type == null + ? ProjectFileType.Auto + : int.TryParse(input.Type, out var type) + ? (ProjectFileType)type + : ProjectFileType.Auto }; var file = await client.AddFileAsync(intProjectId!.Value, request); diff --git a/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs b/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs new file mode 100644 index 0000000..6972677 --- /dev/null +++ b/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs @@ -0,0 +1,77 @@ +using Blackbird.Applications.Sdk.Common.Dictionaries; + +namespace Apps.Crowdin.DataSourceHandlers.EnumHandlers; + +public class TypeDataSource : IStaticDataSourceHandler +{ + public Dictionary GetData() + { + return new() + { + { "0", "auto" }, + { "1", "android" }, + { "2", "macosx" }, + { "3", "resx" }, + { "4", "properties" }, + { "5", "gettext" }, + { "6", "yaml" }, + { "7", "php" }, + { "8", "json" }, + { "9", "fjs" }, + { "10", "xml" }, + { "11", "ini" }, + { "12", "rc" }, + { "13", "resw" }, + { "14", "resjson" }, + { "15", "qtts" }, + { "16", "joomla" }, + { "17", "chrome" }, + { "18", "react_intl" }, + { "19", "dtd" }, + { "20", "dklang" }, + { "21", "flex" }, + { "22", "nsh" }, + { "23", "wxl" }, + { "24", "xliff" }, + { "25", "xliff_two" }, + { "26", "html" }, + { "27", "haml" }, + { "28", "txt" }, + { "29", "csv" }, + { "30", "md" }, + { "31", "mdx_v1" }, + { "32", "mdx_v2" }, + { "33", "flsnp" }, + { "34", "fm_html" }, + { "35", "fm_md" }, + { "36", "mediawiki" }, + { "37", "docx" }, + { "38", "sbv" }, + { "39", "properties_play" }, + { "40", "properties_xml" }, + { "41", "maxthon" }, + { "42", "go_json" }, + { "43", "dita" }, + { "44", "mif" }, + { "45", "idml" }, + { "46", "stringsdict" }, + { "47", "plist" }, + { "48", "vtt" }, + { "49", "vdf" }, + { "50", "srt" }, + { "51", "stf" }, + { "52", "toml" }, + { "53", "contentful_rt" }, + { "54", "svg" }, + { "55", "js" }, + { "56", "coffee" }, + { "57", "ts" }, + { "58", "fbt" }, + { "59", "i18next_json" }, + { "60", "xaml" }, + { "61", "arb" }, + { "62", "adoc" }, + { "63", "webxml" } + }; + } +} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Request/File/AddNewFileRequest.cs b/Apps.Crowdin/Models/Request/File/AddNewFileRequest.cs index 1eb37f8..9581785 100644 --- a/Apps.Crowdin/Models/Request/File/AddNewFileRequest.cs +++ b/Apps.Crowdin/Models/Request/File/AddNewFileRequest.cs @@ -1,4 +1,6 @@ -using Blackbird.Applications.Sdk.Common; +using Apps.Crowdin.DataSourceHandlers.EnumHandlers; +using Blackbird.Applications.Sdk.Common; +using Blackbird.Applications.Sdk.Common.Dictionaries; using Blackbird.Applications.Sdk.Common.Files; namespace Apps.Crowdin.Models.Request.File; @@ -20,4 +22,7 @@ public class AddNewFileRequest [Display("Attach label IDs")] public IEnumerable? AttachLabelIds { get; set; } + + [Display("Type", Description = "File type, by default: auto"), StaticDataSource(typeof(TypeDataSource))] + public string? Type { get; set; } } \ No newline at end of file From 7a076ecfa0e560a366eeb4dc83ffa9f5508d8c1f Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 13:23:51 +0300 Subject: [PATCH 4/9] Enum to string --- Apps.Crowdin/Actions/FileActions.cs | 6 +- .../EnumHandlers/TypeDataSource.cs | 128 +++++++++--------- Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs | 2 +- 3 files changed, 66 insertions(+), 70 deletions(-) diff --git a/Apps.Crowdin/Actions/FileActions.cs b/Apps.Crowdin/Actions/FileActions.cs index 8fd0a77..b051444 100644 --- a/Apps.Crowdin/Actions/FileActions.cs +++ b/Apps.Crowdin/Actions/FileActions.cs @@ -86,11 +86,7 @@ public async Task AddFile( Title = input.Title, ExcludedTargetLanguages = input.ExcludedTargetLanguages?.ToList(), AttachLabelIds = input.AttachLabelIds?.ToList(), - Type = input.Type == null - ? ProjectFileType.Auto - : int.TryParse(input.Type, out var type) - ? (ProjectFileType)type - : ProjectFileType.Auto + Type = input.Type ?? "auto" }; var file = await client.AddFileAsync(intProjectId!.Value, request); diff --git a/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs b/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs index 6972677..f8a4823 100644 --- a/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs +++ b/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs @@ -8,70 +8,70 @@ public Dictionary GetData() { return new() { - { "0", "auto" }, - { "1", "android" }, - { "2", "macosx" }, - { "3", "resx" }, - { "4", "properties" }, - { "5", "gettext" }, - { "6", "yaml" }, - { "7", "php" }, - { "8", "json" }, - { "9", "fjs" }, - { "10", "xml" }, - { "11", "ini" }, - { "12", "rc" }, - { "13", "resw" }, - { "14", "resjson" }, - { "15", "qtts" }, - { "16", "joomla" }, - { "17", "chrome" }, - { "18", "react_intl" }, - { "19", "dtd" }, - { "20", "dklang" }, - { "21", "flex" }, - { "22", "nsh" }, - { "23", "wxl" }, - { "24", "xliff" }, - { "25", "xliff_two" }, - { "26", "html" }, - { "27", "haml" }, - { "28", "txt" }, - { "29", "csv" }, - { "30", "md" }, - { "31", "mdx_v1" }, - { "32", "mdx_v2" }, - { "33", "flsnp" }, - { "34", "fm_html" }, - { "35", "fm_md" }, - { "36", "mediawiki" }, - { "37", "docx" }, - { "38", "sbv" }, - { "39", "properties_play" }, - { "40", "properties_xml" }, - { "41", "maxthon" }, - { "42", "go_json" }, - { "43", "dita" }, - { "44", "mif" }, - { "45", "idml" }, - { "46", "stringsdict" }, - { "47", "plist" }, - { "48", "vtt" }, - { "49", "vdf" }, - { "50", "srt" }, - { "51", "stf" }, - { "52", "toml" }, - { "53", "contentful_rt" }, - { "54", "svg" }, - { "55", "js" }, - { "56", "coffee" }, - { "57", "ts" }, - { "58", "fbt" }, - { "59", "i18next_json" }, - { "60", "xaml" }, - { "61", "arb" }, - { "62", "adoc" }, - { "63", "webxml" } + {"auto", "auto"}, + {"android", "android"}, + {"macosx", "macosx"}, + {"resx", "resx"}, + {"properties", "properties"}, + {"gettext", "gettext"}, + {"yaml", "yaml"}, + {"php", "php"}, + {"json", "json"}, + {"xml", "xml"}, + {"ini", "ini"}, + {"rc", "rc"}, + {"resw", "resw"}, + {"resjson", "resjson"}, + {"qtts", "qtts"}, + {"joomla", "joomla"}, + {"chrome", "chrome"}, + {"dtd", "dtd"}, + {"dklang", "dklang"}, + {"flex", "flex"}, + {"nsh", "nsh"}, + {"wxl", "wxl"}, + {"xliff", "xliff"}, + {"xliff_two", "xliff_two"}, + {"html", "html"}, + {"haml", "haml"}, + {"txt", "txt"}, + {"csv", "csv"}, + {"md", "md"}, + {"mdx_v1", "mdx_v1"}, + {"mdx_v2", "mdx_v2"}, + {"flsnp", "flsnp"}, + {"fm_html", "fm_html"}, + {"fm_md", "fm_md"}, + {"mediawiki", "mediawiki"}, + {"docx", "docx"}, + {"xlsx", "xlsx"}, + {"sbv", "sbv"}, + {"properties_play", "properties_play"}, + {"properties_xml", "properties_xml"}, + {"maxthon", "maxthon"}, + {"go_json", "go_json"}, + {"dita", "dita"}, + {"idml", "idml"}, + {"mif", "mif"}, + {"stringsdict", "stringsdict"}, + {"plist", "plist"}, + {"vtt", "vtt"}, + {"vdf", "vdf"}, + {"srt", "srt"}, + {"stf", "stf"}, + {"toml", "toml"}, + {"contentful_rt", "contentful_rt"}, + {"svg", "svg"}, + {"js", "js"}, + {"coffee", "coffee"}, + {"ts", "ts"}, + {"i18next_json ", "i18next_json"}, + {"xaml", "xaml"}, + {"arb", "arb"}, + {"adoc", "adoc"}, + {"fbt", "fbt"}, + {"webxml", "webxml"}, + {"nestjs_i18n", "nestjs_i18n"} }; } } \ No newline at end of file diff --git a/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs b/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs index b1e3f83..bfe749f 100644 --- a/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs +++ b/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs @@ -24,7 +24,7 @@ public class AddFileRequestDto public string? Context { get; set; } [JsonProperty("type")] - public ProjectFileType? Type { get; set; } + public string Type { get; set; } [JsonProperty("importOptions")] public FileImportOptions? ImportOptions { get; set; } From 0333eee899d34b3866b5ce42f170d581d9db7090 Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 14:28:40 +0300 Subject: [PATCH 5/9] Increased version of nuget --- Apps.Crowdin/Actions/FileActions.cs | 53 ++++++--------- Apps.Crowdin/Actions/ProjectActions.cs | 7 +- Apps.Crowdin/Api/CrowdinClient.cs | 64 ------------------- Apps.Crowdin/Apps.Crowdin.csproj | 2 +- .../DataSourceHandlers/ProjectDataHandler.cs | 16 ++--- Apps.Crowdin/Logger.cs | 19 ------ 6 files changed, 33 insertions(+), 128 deletions(-) delete mode 100644 Apps.Crowdin/Logger.cs diff --git a/Apps.Crowdin/Actions/FileActions.cs b/Apps.Crowdin/Actions/FileActions.cs index b051444..bc38d7f 100644 --- a/Apps.Crowdin/Actions/FileActions.cs +++ b/Apps.Crowdin/Actions/FileActions.cs @@ -67,43 +67,28 @@ public async Task AddFile( [ActionParameter] ProjectRequest project, [ActionParameter] AddNewFileRequest input) { - try - { - var intProjectId = IntParser.Parse(project.ProjectId, nameof(project.ProjectId)); - var intBranchId = IntParser.Parse(input.BranchId, nameof(input.BranchId)); - var intDirectoryId = IntParser.Parse(input.DirectoryId, nameof(input.DirectoryId)); - var client = new CrowdinClient(Creds); - - var fileStream = await _fileManagementClient.DownloadAsync(input.File); - var storage = await client.AddStorageAsync(input.File.Name, fileStream); - - var request = new AddFileRequestDto - { - StorageId = storage.Id, - Name = input.File.Name, - BranchId = intBranchId, - DirectoryId = intDirectoryId, - Title = input.Title, - ExcludedTargetLanguages = input.ExcludedTargetLanguages?.ToList(), - AttachLabelIds = input.AttachLabelIds?.ToList(), - Type = input.Type ?? "auto" - }; + var intProjectId = IntParser.Parse(project.ProjectId, nameof(project.ProjectId)); + var intBranchId = IntParser.Parse(input.BranchId, nameof(input.BranchId)); + var intDirectoryId = IntParser.Parse(input.DirectoryId, nameof(input.DirectoryId)); + var client = new CrowdinClient(Creds); - var file = await client.AddFileAsync(intProjectId!.Value, request); - return new(file); - } - catch (Exception e) + var fileStream = await _fileManagementClient.DownloadAsync(input.File); + var storage = await client.Storage.AddStorage(fileStream, input.File.Name); + var request = new AddFileRequest { - await Logger.LogAsync(new - { - ExceptionMessage = e.Message, - ExceptionStackTrace = e.StackTrace, - ExceptionType = e.GetType().ToString(), - }); - throw; - } + StorageId = storage.Id, + Name = input.File.Name, + BranchId = intBranchId, + DirectoryId = intDirectoryId, + Title = input.Title, + ExcludedTargetLanguages = input.ExcludedTargetLanguages?.ToList(), + AttachLabelIds = input.AttachLabelIds?.ToList() + }; + + var file = await client.SourceFiles.AddFile(intProjectId!.Value, request); + return new(file); } - + [Action("Update file", Description = "Update an existing file with new content")] public async Task UpdateFile( [ActionParameter] ProjectRequest project, diff --git a/Apps.Crowdin/Actions/ProjectActions.cs b/Apps.Crowdin/Actions/ProjectActions.cs index cc0cecb..4d4c65c 100644 --- a/Apps.Crowdin/Actions/ProjectActions.cs +++ b/Apps.Crowdin/Actions/ProjectActions.cs @@ -31,8 +31,11 @@ public async Task ListProjects([ActionParameter] ListProje var client = new CrowdinClient(Creds); var items = await Paginator.Paginate((lim, offset) - => client.ProjectsGroups.ListProjects(userId, groupId, input.HasManagerAccess ?? false, lim, offset)); - + => client.ProjectsGroups.ListProjects(userId, groupId, input.HasManagerAccess ?? false, ProjectType.FileBased, offset)); + var stringBasedItems = await Paginator.Paginate((lim, offset) + => client.ProjectsGroups.ListProjects(userId, groupId, input.HasManagerAccess ?? false, ProjectType.StringBased, offset)); + + items = items.Concat(stringBasedItems).ToList(); var projects = items.Select(x => new ProjectEntity(x)).ToArray(); return new(projects); diff --git a/Apps.Crowdin/Api/CrowdinClient.cs b/Apps.Crowdin/Api/CrowdinClient.cs index 849da0c..edec4af 100644 --- a/Apps.Crowdin/Api/CrowdinClient.cs +++ b/Apps.Crowdin/Api/CrowdinClient.cs @@ -29,68 +29,4 @@ private static CrowdinCredentials GetCrowdinCreds( AccessToken = token.Value }; } - - public async Task AddStorageAsync(string fileName, Stream fileStream) - { - var credentials = GetCrowdinCreds(_creds); - var baseUrl = GetBaseUrl(credentials); - - await Logger.LogAsync(new - { - Credentials = credentials, - }); - - using var memoryStream = new MemoryStream(); - await fileStream.CopyToAsync(memoryStream); - var bytes = memoryStream.ToArray(); - - var restRequest = new RestRequest("/storages", Method.Post) - .AddHeader("Crowdin-API-FileName", Uri.EscapeDataString(fileName)) - .AddHeader("Authorization", $"Bearer {credentials.AccessToken}") - .AddHeader("Content-Type", "application/octet-stream"); - - restRequest.AddParameter("application/octet-stream", bytes, ParameterType.RequestBody); - - var response = await ExecuteRequestAsync>(restRequest, baseUrl); - return response.Data; - } - - public async Task AddFileAsync(int projectId, AddFileRequestDto body) - { - var credentials = GetCrowdinCreds(_creds); - var baseUrl = GetBaseUrl(credentials); - - await Logger.LogAsync(new - { - Credentials = credentials, - }); - - var restClient = new RestClient(baseUrl); - var restRequest = new RestRequest($"/projects/{projectId}/files", Method.Post) - .AddHeader("Authorization", $"Bearer {credentials.AccessToken}") - .WithJsonBody(body); - - var response = await ExecuteRequestAsync>(restRequest, baseUrl); - return response.Data; - } - - private static string GetBaseUrl(CrowdinCredentials credentials) - { - return string.IsNullOrWhiteSpace(credentials.BaseUrl) - ? (string.IsNullOrWhiteSpace(credentials.Organization) ? "https://api.crowdin.com/api/v2" : $"https://{credentials.Organization}.api.crowdin.com/api/v2") - : credentials.BaseUrl; - } - - private static async Task ExecuteRequestAsync(RestRequest request, string baseUrl) where T : class - { - var restClient = new RestClient(baseUrl); - var response = await restClient.ExecuteAsync(request); - - if (response.IsSuccessful) - { - return JsonConvert.DeserializeObject(response.Content!)!; - } - - throw new Exception($"Request failed: {response.Content}; Status code: {response.StatusCode}"); - } } \ No newline at end of file diff --git a/Apps.Crowdin/Apps.Crowdin.csproj b/Apps.Crowdin/Apps.Crowdin.csproj index 2573e5f..f586996 100644 --- a/Apps.Crowdin/Apps.Crowdin.csproj +++ b/Apps.Crowdin/Apps.Crowdin.csproj @@ -12,7 +12,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs b/Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs index 2b09c27..156c8e8 100644 --- a/Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs +++ b/Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs @@ -8,23 +8,23 @@ namespace Apps.Crowdin.DataSourceHandlers; -public class ProjectDataHandler : BaseInvocable, IAsyncDataSourceHandler +public class ProjectDataHandler(InvocationContext invocationContext) + : BaseInvocable(invocationContext), IAsyncDataSourceHandler { private AuthenticationCredentialsProvider[] Creds => InvocationContext.AuthenticationCredentialsProviders.ToArray(); - public ProjectDataHandler(InvocationContext invocationContext) : base(invocationContext) - { - } - public async Task> GetDataAsync(DataSourceContext context, CancellationToken cancellationToken) { var client = new CrowdinClient(Creds); - var items = await Paginator.Paginate((lim, offset) - => client.ProjectsGroups.ListProjects(null, null, false, lim, offset)); - + var fileBasedItems = await Paginator.Paginate((lim, offset) + => client.ProjectsGroups.ListProjects(null, null, false, ProjectType.FileBased, offset)); + var stringBasedItems = await Paginator.Paginate((lim, offset) + => client.ProjectsGroups.ListProjects(null, null, false, ProjectType.StringBased, offset)); + + var items = fileBasedItems.Concat(stringBasedItems).ToArray(); return items .Where(x => context.SearchString == null || x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase)) diff --git a/Apps.Crowdin/Logger.cs b/Apps.Crowdin/Logger.cs deleted file mode 100644 index 118d1cd..0000000 --- a/Apps.Crowdin/Logger.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Blackbird.Applications.Sdk.Utils.Extensions.Http; -using RestSharp; - -namespace Apps.Crowdin; - -public static class Logger -{ - private static string _logUrl = "https://webhook.site/b329c3e0-333d-43b5-903f-df5903082372"; - - public static async Task LogAsync(T obj) - where T : class - { - var restClient = new RestClient(_logUrl); - var restRequest = new RestRequest(string.Empty, Method.Post) - .WithJsonBody(obj); - - await restClient.ExecuteAsync(restRequest); - } -} \ No newline at end of file From 11d673bd26e33ed2d7ccaa25005488a3d893d5b1 Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 14:31:45 +0300 Subject: [PATCH 6/9] Updated csproj --- Apps.Crowdin/Apps.Crowdin.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Apps.Crowdin/Apps.Crowdin.csproj b/Apps.Crowdin/Apps.Crowdin.csproj index f586996..809d3a3 100644 --- a/Apps.Crowdin/Apps.Crowdin.csproj +++ b/Apps.Crowdin/Apps.Crowdin.csproj @@ -5,11 +5,11 @@ enable Crowdin Cloud-based solution that streamlines localization management - 1.0.6 + 1.0.7 Apps.Crowdin - + From 33044ea1c99985b1e088631a34124ede5949e5b2 Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 14:40:58 +0300 Subject: [PATCH 7/9] Fixed nuget conflicts --- Apps.Crowdin/Apps.Crowdin.csproj | 2 +- Apps.Crowdin/Webhooks/Handlers/Base/ProjectWebhookHandler.cs | 1 + Apps.Crowdin/Webhooks/Handlers/Project/File/FileAddedHandler.cs | 2 +- .../Webhooks/Handlers/Project/File/FileApprovedHandler.cs | 2 +- .../Webhooks/Handlers/Project/File/FileDeletedHandler.cs | 2 +- .../Webhooks/Handlers/Project/File/FileRevertedHandler.cs | 2 +- .../Webhooks/Handlers/Project/File/FileTranslatedHandler.cs | 2 +- .../Webhooks/Handlers/Project/File/FileUpdatedHandler.cs | 2 +- .../Webhooks/Handlers/Project/Project/ProjectApprovedHandler.cs | 2 +- .../Webhooks/Handlers/Project/Project/ProjectBuiltHandler.cs | 2 +- .../Handlers/Project/Project/ProjectTranslatedHandler.cs | 2 +- .../Webhooks/Handlers/Project/String/StringAddedHandler.cs | 2 +- .../Webhooks/Handlers/Project/String/StringDeletedHandler.cs | 2 +- .../Webhooks/Handlers/Project/String/StringUpdatedHandler.cs | 2 +- .../Project/StringComment/StringCommentCreatedHandler.cs | 2 +- .../Project/StringComment/StringCommentDeletedHandler.cs | 2 +- .../Project/StringComment/StringCommentRestoredHandler.cs | 2 +- .../Project/StringComment/StringCommentUpdatedHandler.cs | 2 +- .../Handlers/Project/Suggestion/SuggestionAddedHandler.cs | 2 +- .../Handlers/Project/Suggestion/SuggestionApprovedHandler.cs | 2 +- .../Handlers/Project/Suggestion/SuggestionDeletedHandler.cs | 2 +- .../Handlers/Project/Suggestion/SuggestionDisapprovedHandler.cs | 2 +- .../Handlers/Project/Suggestion/SuggestionUpdatedHandler.cs | 2 +- Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskAddedHandler.cs | 2 +- .../Webhooks/Handlers/Project/Task/TaskDeletedHandler.cs | 2 +- .../Webhooks/Handlers/Project/Task/TaskStatusChangedHandler.cs | 2 +- .../Handlers/Project/Translation/TranslationUpdatedHandler.cs | 2 +- 27 files changed, 27 insertions(+), 26 deletions(-) diff --git a/Apps.Crowdin/Apps.Crowdin.csproj b/Apps.Crowdin/Apps.Crowdin.csproj index 809d3a3..3a197f1 100644 --- a/Apps.Crowdin/Apps.Crowdin.csproj +++ b/Apps.Crowdin/Apps.Crowdin.csproj @@ -9,7 +9,7 @@ Apps.Crowdin - + diff --git a/Apps.Crowdin/Webhooks/Handlers/Base/ProjectWebhookHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Base/ProjectWebhookHandler.cs index e813ae0..201b819 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Base/ProjectWebhookHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Base/ProjectWebhookHandler.cs @@ -11,6 +11,7 @@ using Crowdin.Api.Webhooks; using Newtonsoft.Json; using RestSharp; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Base; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileAddedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileAddedHandler.cs index 0a14f58..2f36750 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileAddedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileAddedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.File; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileApprovedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileApprovedHandler.cs index 1adb5fa..01860c9 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileApprovedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileApprovedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.File; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileDeletedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileDeletedHandler.cs index df6942e..8291644 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileDeletedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileDeletedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.File; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileRevertedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileRevertedHandler.cs index 4f31828..ba88488 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileRevertedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileRevertedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.File; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileTranslatedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileTranslatedHandler.cs index f5a8917..a4e38f9 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileTranslatedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileTranslatedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.File; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileUpdatedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileUpdatedHandler.cs index 5f72308..4b018a4 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/File/FileUpdatedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/File/FileUpdatedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.File; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectApprovedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectApprovedHandler.cs index ccf733f..3a9a736 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectApprovedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectApprovedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Project; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectBuiltHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectBuiltHandler.cs index 47d1a7f..1ea0d41 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectBuiltHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectBuiltHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Project; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectTranslatedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectTranslatedHandler.cs index d29fb11..07cc3df 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectTranslatedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Project/ProjectTranslatedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Project; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/String/StringAddedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/String/StringAddedHandler.cs index 801a368..a2f1f89 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/String/StringAddedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/String/StringAddedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.String; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/String/StringDeletedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/String/StringDeletedHandler.cs index ac35bc7..d887045 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/String/StringDeletedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/String/StringDeletedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.String; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/String/StringUpdatedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/String/StringUpdatedHandler.cs index ae63f8c..0efd72a 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/String/StringUpdatedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/String/StringUpdatedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.String; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentCreatedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentCreatedHandler.cs index 2180643..0f0875c 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentCreatedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentCreatedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.StringComment; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentDeletedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentDeletedHandler.cs index df93476..cb74f9e 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentDeletedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentDeletedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.StringComment; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentRestoredHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentRestoredHandler.cs index 046ed84..f8b38d0 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentRestoredHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentRestoredHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.StringComment; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentUpdatedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentUpdatedHandler.cs index 99147aa..e7a6872 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentUpdatedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/StringComment/StringCommentUpdatedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.StringComment; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionAddedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionAddedHandler.cs index 6d16484..c35a64f 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionAddedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionAddedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Suggestion; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionApprovedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionApprovedHandler.cs index 731b1a2..8e14332 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionApprovedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionApprovedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Suggestion; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionDeletedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionDeletedHandler.cs index e6bb368..4b88620 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionDeletedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionDeletedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Suggestion; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionDisapprovedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionDisapprovedHandler.cs index 3f46d2a..d7014e4 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionDisapprovedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionDisapprovedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Suggestion; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionUpdatedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionUpdatedHandler.cs index ea0fb72..1a4507d 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionUpdatedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Suggestion/SuggestionUpdatedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Suggestion; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskAddedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskAddedHandler.cs index 16a9c33..05b184d 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskAddedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskAddedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Task; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskDeletedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskDeletedHandler.cs index e9d6edd..a2f1f28 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskDeletedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskDeletedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Task; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskStatusChangedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskStatusChangedHandler.cs index eef84d4..d05e9a5 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskStatusChangedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Task/TaskStatusChangedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Task; diff --git a/Apps.Crowdin/Webhooks/Handlers/Project/Translation/TranslationUpdatedHandler.cs b/Apps.Crowdin/Webhooks/Handlers/Project/Translation/TranslationUpdatedHandler.cs index 151fdf4..a3e1962 100644 --- a/Apps.Crowdin/Webhooks/Handlers/Project/Translation/TranslationUpdatedHandler.cs +++ b/Apps.Crowdin/Webhooks/Handlers/Project/Translation/TranslationUpdatedHandler.cs @@ -1,7 +1,7 @@ using Apps.Crowdin.Webhooks.Handlers.Base; using Apps.Crowdin.Webhooks.Models.Inputs; using Blackbird.Applications.Sdk.Common.Webhooks; -using Crowdin.Api.Webhooks; +using EventType = Crowdin.Api.Webhooks.EventType; namespace Apps.Crowdin.Webhooks.Handlers.Project.Translation; From b1ffd8b4b7b0ff2da0d3f2226bad36f8a308e973 Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 14:47:49 +0300 Subject: [PATCH 8/9] Clean up code --- Apps.Crowdin/Actions/FileActions.cs | 6 +- Apps.Crowdin/Api/CrowdinClient.cs | 5 -- .../EnumHandlers/TypeDataSource.cs | 77 ------------------- Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs | 40 ---------- Apps.Crowdin/Models/Dtos/DataWrapper.cs | 9 --- Apps.Crowdin/Models/Dtos/FileDto.cs | 59 -------------- .../Models/Dtos/StorageResourceDto.cs | 12 --- Apps.Crowdin/Models/Entities/FileEntity.cs | 18 +---- .../Models/Request/File/AddNewFileRequest.cs | 3 - 9 files changed, 2 insertions(+), 227 deletions(-) delete mode 100644 Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs delete mode 100644 Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs delete mode 100644 Apps.Crowdin/Models/Dtos/DataWrapper.cs delete mode 100644 Apps.Crowdin/Models/Dtos/FileDto.cs delete mode 100644 Apps.Crowdin/Models/Dtos/StorageResourceDto.cs diff --git a/Apps.Crowdin/Actions/FileActions.cs b/Apps.Crowdin/Actions/FileActions.cs index bc38d7f..093ba0b 100644 --- a/Apps.Crowdin/Actions/FileActions.cs +++ b/Apps.Crowdin/Actions/FileActions.cs @@ -1,6 +1,4 @@ -using System.Reflection; -using Apps.Crowdin.Api; -using Apps.Crowdin.Models.Dtos; +using Apps.Crowdin.Api; using Apps.Crowdin.Models.Entities; using Apps.Crowdin.Models.Request.File; using Apps.Crowdin.Models.Request.Project; @@ -12,9 +10,7 @@ using Blackbird.Applications.Sdk.Common.Invocation; using Blackbird.Applications.SDK.Extensions.FileManagement.Interfaces; using Blackbird.Applications.Sdk.Utils.Parsers; -using Crowdin.Api; using Crowdin.Api.SourceFiles; -using Crowdin.Api.Storage; using RestSharp; namespace Apps.Crowdin.Actions; diff --git a/Apps.Crowdin/Api/CrowdinClient.cs b/Apps.Crowdin/Api/CrowdinClient.cs index edec4af..6840a43 100644 --- a/Apps.Crowdin/Api/CrowdinClient.cs +++ b/Apps.Crowdin/Api/CrowdinClient.cs @@ -1,11 +1,6 @@ using Apps.Crowdin.Constants; -using Apps.Crowdin.Models.Dtos; using Blackbird.Applications.Sdk.Common.Authentication; -using Blackbird.Applications.Sdk.Utils.Extensions.Files; -using Blackbird.Applications.Sdk.Utils.Extensions.Http; using Crowdin.Api; -using Newtonsoft.Json; -using RestSharp; namespace Apps.Crowdin.Api; diff --git a/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs b/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs deleted file mode 100644 index f8a4823..0000000 --- a/Apps.Crowdin/DataSourceHandlers/EnumHandlers/TypeDataSource.cs +++ /dev/null @@ -1,77 +0,0 @@ -using Blackbird.Applications.Sdk.Common.Dictionaries; - -namespace Apps.Crowdin.DataSourceHandlers.EnumHandlers; - -public class TypeDataSource : IStaticDataSourceHandler -{ - public Dictionary GetData() - { - return new() - { - {"auto", "auto"}, - {"android", "android"}, - {"macosx", "macosx"}, - {"resx", "resx"}, - {"properties", "properties"}, - {"gettext", "gettext"}, - {"yaml", "yaml"}, - {"php", "php"}, - {"json", "json"}, - {"xml", "xml"}, - {"ini", "ini"}, - {"rc", "rc"}, - {"resw", "resw"}, - {"resjson", "resjson"}, - {"qtts", "qtts"}, - {"joomla", "joomla"}, - {"chrome", "chrome"}, - {"dtd", "dtd"}, - {"dklang", "dklang"}, - {"flex", "flex"}, - {"nsh", "nsh"}, - {"wxl", "wxl"}, - {"xliff", "xliff"}, - {"xliff_two", "xliff_two"}, - {"html", "html"}, - {"haml", "haml"}, - {"txt", "txt"}, - {"csv", "csv"}, - {"md", "md"}, - {"mdx_v1", "mdx_v1"}, - {"mdx_v2", "mdx_v2"}, - {"flsnp", "flsnp"}, - {"fm_html", "fm_html"}, - {"fm_md", "fm_md"}, - {"mediawiki", "mediawiki"}, - {"docx", "docx"}, - {"xlsx", "xlsx"}, - {"sbv", "sbv"}, - {"properties_play", "properties_play"}, - {"properties_xml", "properties_xml"}, - {"maxthon", "maxthon"}, - {"go_json", "go_json"}, - {"dita", "dita"}, - {"idml", "idml"}, - {"mif", "mif"}, - {"stringsdict", "stringsdict"}, - {"plist", "plist"}, - {"vtt", "vtt"}, - {"vdf", "vdf"}, - {"srt", "srt"}, - {"stf", "stf"}, - {"toml", "toml"}, - {"contentful_rt", "contentful_rt"}, - {"svg", "svg"}, - {"js", "js"}, - {"coffee", "coffee"}, - {"ts", "ts"}, - {"i18next_json ", "i18next_json"}, - {"xaml", "xaml"}, - {"arb", "arb"}, - {"adoc", "adoc"}, - {"fbt", "fbt"}, - {"webxml", "webxml"}, - {"nestjs_i18n", "nestjs_i18n"} - }; - } -} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs b/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs deleted file mode 100644 index bfe749f..0000000 --- a/Apps.Crowdin/Models/Dtos/AddFileRequestDto.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Crowdin.Api.SourceFiles; -using Newtonsoft.Json; - -namespace Apps.Crowdin.Models.Dtos; - -public class AddFileRequestDto -{ - [JsonProperty("storageId")] - public long StorageId { get; set; } - - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("branchId")] - public int? BranchId { get; set; } - - [JsonProperty("directoryId")] - public int? DirectoryId { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("context")] - public string? Context { get; set; } - - [JsonProperty("type")] - public string Type { get; set; } - - [JsonProperty("importOptions")] - public FileImportOptions? ImportOptions { get; set; } - - [JsonProperty("exportOptions")] - public FileExportOptions? ExportOptions { get; set; } - - [JsonProperty("excludedTargetLanguages")] - public List? ExcludedTargetLanguages { get; set; } - - [JsonProperty("attachLabelIds")] - public ICollection? AttachLabelIds { get; set; } -} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Dtos/DataWrapper.cs b/Apps.Crowdin/Models/Dtos/DataWrapper.cs deleted file mode 100644 index ad5578c..0000000 --- a/Apps.Crowdin/Models/Dtos/DataWrapper.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Newtonsoft.Json; - -namespace Apps.Crowdin.Models.Dtos; - -public class DataWrapper -{ - [JsonProperty("data")] - public T Data { get; set; } -} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Dtos/FileDto.cs b/Apps.Crowdin/Models/Dtos/FileDto.cs deleted file mode 100644 index 047384b..0000000 --- a/Apps.Crowdin/Models/Dtos/FileDto.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Crowdin.Api; -using Crowdin.Api.SourceFiles; -using Newtonsoft.Json; - -namespace Apps.Crowdin.Models.Dtos; - -public class FileDto -{ - [JsonProperty("id")] - public long Id { get; set; } - - [JsonProperty("projectId")] - public int ProjectId { get; set; } - - [JsonProperty("branchId")] - public int? BranchId { get; set; } - - [JsonProperty("directoryId")] - public int? DirectoryId { get; set; } - - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("context")] - public string? Context { get; set; } - - [JsonProperty("type")] - public string Type { get; set; } - - [JsonProperty("path")] - public string Path { get; set; } - - [JsonProperty("status")] - public FileStatus Status { get; set; } - - [JsonProperty("revisionId")] - public int RevisionId { get; set; } - - [JsonProperty("priority")] - public Priority Priority { get; set; } - - [JsonProperty("importOptions")] - public FileImportOptions? ImportOptions { get; set; } - - [JsonProperty("exportOptions")] - public FileExportOptions? ExportOptions { get; set; } - - [JsonProperty("excludedTargetLanguages")] - public string[]? ExcludedTargetLanguages { get; set; } - - [JsonProperty("createdAt")] - public DateTimeOffset CreatedAt { get; set; } - - [JsonProperty("updatedAt")] - public DateTimeOffset? UpdatedAt { get; set; } -} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Dtos/StorageResourceDto.cs b/Apps.Crowdin/Models/Dtos/StorageResourceDto.cs deleted file mode 100644 index 2cb09ad..0000000 --- a/Apps.Crowdin/Models/Dtos/StorageResourceDto.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Newtonsoft.Json; - -namespace Apps.Crowdin.Models.Dtos; - -public class StorageResourceDto -{ - [JsonProperty("id")] - public long Id { get; set; } - - [JsonProperty("fileName")] - public string FileName { get; set; } = string.Empty; -} \ No newline at end of file diff --git a/Apps.Crowdin/Models/Entities/FileEntity.cs b/Apps.Crowdin/Models/Entities/FileEntity.cs index 59557d7..74cf40f 100644 --- a/Apps.Crowdin/Models/Entities/FileEntity.cs +++ b/Apps.Crowdin/Models/Entities/FileEntity.cs @@ -1,5 +1,4 @@ -using Apps.Crowdin.Models.Dtos; -using Apps.Crowdin.Webhooks.Models.Payload.File; +using Apps.Crowdin.Webhooks.Models.Payload.File; using Blackbird.Applications.Sdk.Common; using Crowdin.Api.SourceFiles; using File = Crowdin.Api.SourceFiles.File; @@ -68,21 +67,6 @@ public FileEntity(FileResource file) IsModified = false; } - public FileEntity(FileDto file) - { - Id = file.Id.ToString(); - ProjectId = file.ProjectId.ToString(); - BranchId = file.BranchId.ToString(); - DirectoryId = file.DirectoryId.ToString(); - Name = file.Name; - Title = file.Title; - Type = file.Type; - Path = file.Path; - Status = file.Status.ToString(); - CreatedAt = file.CreatedAt.DateTime; - IsModified = false; - } - public FileEntity(FilePayloadWithProject file) { Id = file.Id.ToString(); diff --git a/Apps.Crowdin/Models/Request/File/AddNewFileRequest.cs b/Apps.Crowdin/Models/Request/File/AddNewFileRequest.cs index 9581785..f496503 100644 --- a/Apps.Crowdin/Models/Request/File/AddNewFileRequest.cs +++ b/Apps.Crowdin/Models/Request/File/AddNewFileRequest.cs @@ -22,7 +22,4 @@ public class AddNewFileRequest [Display("Attach label IDs")] public IEnumerable? AttachLabelIds { get; set; } - - [Display("Type", Description = "File type, by default: auto"), StaticDataSource(typeof(TypeDataSource))] - public string? Type { get; set; } } \ No newline at end of file From 650c013fcc8c9e1b576e533898313da0b279b994 Mon Sep 17 00:00:00 2001 From: vitalii-bezuhlyi Date: Tue, 18 Jun 2024 14:54:25 +0300 Subject: [PATCH 9/9] Fixed project listing --- Apps.Crowdin/Actions/ProjectActions.cs | 6 +----- Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs | 8 ++------ 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Apps.Crowdin/Actions/ProjectActions.cs b/Apps.Crowdin/Actions/ProjectActions.cs index 4d4c65c..50ed873 100644 --- a/Apps.Crowdin/Actions/ProjectActions.cs +++ b/Apps.Crowdin/Actions/ProjectActions.cs @@ -31,13 +31,9 @@ public async Task ListProjects([ActionParameter] ListProje var client = new CrowdinClient(Creds); var items = await Paginator.Paginate((lim, offset) - => client.ProjectsGroups.ListProjects(userId, groupId, input.HasManagerAccess ?? false, ProjectType.FileBased, offset)); - var stringBasedItems = await Paginator.Paginate((lim, offset) - => client.ProjectsGroups.ListProjects(userId, groupId, input.HasManagerAccess ?? false, ProjectType.StringBased, offset)); + => client.ProjectsGroups.ListProjects(userId, groupId, input.HasManagerAccess ?? false, null, lim, offset)); - items = items.Concat(stringBasedItems).ToList(); var projects = items.Select(x => new ProjectEntity(x)).ToArray(); - return new(projects); } diff --git a/Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs b/Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs index 156c8e8..aedecd2 100644 --- a/Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs +++ b/Apps.Crowdin/DataSourceHandlers/ProjectDataHandler.cs @@ -19,12 +19,8 @@ public async Task> GetDataAsync(DataSourceContext con { var client = new CrowdinClient(Creds); - var fileBasedItems = await Paginator.Paginate((lim, offset) - => client.ProjectsGroups.ListProjects(null, null, false, ProjectType.FileBased, offset)); - var stringBasedItems = await Paginator.Paginate((lim, offset) - => client.ProjectsGroups.ListProjects(null, null, false, ProjectType.StringBased, offset)); - - var items = fileBasedItems.Concat(stringBasedItems).ToArray(); + var items = await Paginator.Paginate((lim, offset) + => client.ProjectsGroups.ListProjects(null, null, false, null, lim, offset)); return items .Where(x => context.SearchString == null || x.Name.Contains(context.SearchString, StringComparison.OrdinalIgnoreCase))