From 207f5ef58cfbf13aa6c86ed8f1a2ac8acdb9de7b Mon Sep 17 00:00:00 2001 From: Aytac Kirmizi Date: Wed, 15 Mar 2023 20:43:36 +0100 Subject: [PATCH] **update** faced some issues while updating linkding bookmarks, changed the httpclient call. --- .../Core/Abstraction/ILinkdingService.cs | 3 +- .../Linkding/BookmarkUpdatePayload.cs | 4 +- .../Handler/UpdateTargetLinkdingHandler.cs | 6 +-- src/Linkding/Linkding.csproj | 6 +++ src/Linkding/config.yml | 39 ---------------- src/Linkding/data/config.yml | 39 ++++++++++++++++ .../Linkding.Client/LinkdingService.cs | 46 ++++++++++++------- src/Wallabag/Wallabag.csproj | 6 +++ src/Wallabag/{ => data}/config.yml | 0 9 files changed, 87 insertions(+), 62 deletions(-) delete mode 100644 src/Linkding/config.yml create mode 100644 src/Linkding/data/config.yml rename src/Wallabag/{ => data}/config.yml (100%) diff --git a/src/Domain/Core/Abstraction/ILinkdingService.cs b/src/Domain/Core/Abstraction/ILinkdingService.cs index 1c653a5..7d1b3fb 100644 --- a/src/Domain/Core/Abstraction/ILinkdingService.cs +++ b/src/Domain/Core/Abstraction/ILinkdingService.cs @@ -13,8 +13,7 @@ namespace Linkding.Client Task AddBookmarkAsync(BookmarkCreatePayload bookmark); Task UpdateBookmarkCollectionAsync(IEnumerable bookmarks); - Task UpdateBookmarkCollectionAsync(IEnumerable bookmarks); - Task UpdateBookmarkAsync(BookmarkUpdatePayload bookmark); + Task UpdateBookmarkAsync(int id, BookmarkUpdatePayload bookmark); Task GetBookmarkResultsAsync(int limit = 100, int offset = 0); Task GetBookmarkResultsAsync(string url); } diff --git a/src/Domain/Core/Entities/Linkding/BookmarkUpdatePayload.cs b/src/Domain/Core/Entities/Linkding/BookmarkUpdatePayload.cs index b96cd85..333209e 100644 --- a/src/Domain/Core/Entities/Linkding/BookmarkUpdatePayload.cs +++ b/src/Domain/Core/Entities/Linkding/BookmarkUpdatePayload.cs @@ -4,7 +4,7 @@ namespace Core.Entities.Linkding { public class BookmarkUpdatePayload : BookmarkBase { - [JsonPropertyName("id")] - public int Id { get; set; } + // [JsonPropertyName("id")] + // public int Id { get; set; } } } \ No newline at end of file diff --git a/src/Linkding/Handler/UpdateTargetLinkdingHandler.cs b/src/Linkding/Handler/UpdateTargetLinkdingHandler.cs index ff06288..e5d00a4 100644 --- a/src/Linkding/Handler/UpdateTargetLinkdingHandler.cs +++ b/src/Linkding/Handler/UpdateTargetLinkdingHandler.cs @@ -14,7 +14,7 @@ public class UpdateTargetLinkdingHandler : ILinkdingSyncTaskHandler { var linkdingBookmarks = await linkdingService.GetAllBookmarksAsync(); var addedBookmarks = new List(); - var updatedBookmarks = new List(); + var updatedBookmarks = new List(); if (linkdingBookmarks.Count() > 0) { @@ -37,7 +37,7 @@ public class UpdateTargetLinkdingHandler : ILinkdingSyncTaskHandler !linkdingBookmark.Description.Equals(bookmark.Description.Trim(), StringComparison.OrdinalIgnoreCase) || linkdingBookmark.TagNames.Count() != bookmark.TagNames.Count())) { - updatedBookmarks.Add(bookmark.MapToUpdatePayload()); + updatedBookmarks.Add(bookmark); } else { @@ -46,7 +46,7 @@ public class UpdateTargetLinkdingHandler : ILinkdingSyncTaskHandler if (difference.Count() > 0) { - updatedBookmarks.Add(bookmark.MapToUpdatePayload()); + updatedBookmarks.Add(bookmark); } } } diff --git a/src/Linkding/Linkding.csproj b/src/Linkding/Linkding.csproj index 01ed851..e47f80f 100644 --- a/src/Linkding/Linkding.csproj +++ b/src/Linkding/Linkding.csproj @@ -22,4 +22,10 @@ + + + + Always + + diff --git a/src/Linkding/config.yml b/src/Linkding/config.yml deleted file mode 100644 index 6f1a483..0000000 --- a/src/Linkding/config.yml +++ /dev/null @@ -1,39 +0,0 @@ -urlTagMapping: - - name: microsoft_azure - url: https://github.com/azure - - name: microsoft_azuread - url: https://github.com/AzureAD - - name: microsoft_dotnet - url: https://github.com/dotnet-architecture - -taggingRule: - - name: reddit - pattern: https://(?:www\.)?(reddit)\.com(?:/r/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)? - replace: $1,$2 - - name: microsoft - pattern: https://([ a-zA-Z0-9 ]+)?[ \. ]?(microsoft)\.com(?:/.*)? - replace: $1,$2 - - name: microsoft_docs - pattern: "https://(?:docs)\.(?:microsoft)\.com[ / ]?(?: [ a-zA-Z0-9\-\+_ ]+)(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)?" - replace: $1,$2 - - name: youtube - pattern: https://[ [ a-zA-Z0-9 ]+\. ]?(youtube)\.com(?:/.*)? - replace: $1 - - name: ebay - pattern: https://[ [ a-zA-Z0-9 ]+\. ]?(ebay)\.(com|de|fr)(?:/.*)? - replace: $1 - - name: amazon - pattern: https://[ [ a-zA-Z0-9 ]+\. ]?(amazon)\.(com|de|fr)(?:/.*)? - replace: $1 - - name: docker - pattern: https://([ a-zA-Z0-9 ]+)?[ \. ]?(docker)\.com(?:/.*)? - replace: $1,$2 - - name: xbox - pattern: https://[ [ a-zA-Z0-9 ]+\. ]?(xbox)\.com(?:/.*)? - replace: $1 - - name: github - pattern: https://([ a-zA-Z0-9 ]+)?[ \. ]?(github)\.com[ / ]?([ a-zA-Z0-9\-\+_ ]+)(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)? - replace: $2,$3,$4 - - name: github.io - pattern: https://([ a-zA-Z0-9 ]+)\.(github)\.io[ / ]?([ a-zA-Z0-9\-\+_ ]+)(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)? - replace: $2,$3,$4 \ No newline at end of file diff --git a/src/Linkding/data/config.yml b/src/Linkding/data/config.yml new file mode 100644 index 0000000..85313a8 --- /dev/null +++ b/src/Linkding/data/config.yml @@ -0,0 +1,39 @@ +urlTagMapping: + - name: microsoft + url: https://github.com/azure + - name: microsoft + url: https://github.com/AzureAD + - name: microsoft + url: https://github.com/dotnet-architecture + +taggingRule: + - name: reddit + pattern: https://(?:www\.)?(reddit)\.com(?:/r/)?([a-zA-Z0-9\-\+_]+)?(?:/.*)? + replace: $1,$2 + - name: microsoft + pattern: https://([a-zA-Z0-9]+)?[\.]?(microsoft)\.com(?:/.*)? + replace: $1,$2 + - name: microsoft_docs + pattern: 'https://(?:docs)\.(?:microsoft)\.com[/]?(?: [a-zA-Z0-9\-\+_]+)(?:/)?([a-zA-Z0-9\-\+_]+)?(?:/)?([a-zA-Z0-9\-\+_]+)?(?:/.*)?' + replace: $1,$2 + - name: youtube + pattern: https://[[a-zA-Z0-9]+\.]?(youtube)\.com(?:/.*)? + replace: $1 + - name: ebay + pattern: https://[[a-zA-Z0-9]+\.]?(ebay)\.(com|de|fr)(?:/.*)? + replace: $1 + - name: amazon + pattern: https://[[a-zA-Z0-9]+\.]?(amazon)\.(com|de|fr)(?:/.*)? + replace: $1 + - name: docker + pattern: https://([a-zA-Z0-9]+)?[\.]?(docker)\.com(?:/.*)? + replace: $1,$2 + - name: xbox + pattern: https://[[a-zA-Z0-9]+\.]?(xbox)\.com(?:/.*)? + replace: $1 + - name: github + pattern: https://([ a-zA-Z0-9 ]+)?[ \. ]?(github)\.com[ / ]?([ a-zA-Z0-9\-\+_ ]+)(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)? + replace: $2,$3,$4 + - name: github.io + pattern: https://([ a-zA-Z0-9 ]+)\.(github)\.io[ / ]?([ a-zA-Z0-9\-\+_ ]+)(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)? + replace: $1,$2,$3 \ No newline at end of file diff --git a/src/Services/Linkding.Client/LinkdingService.cs b/src/Services/Linkding.Client/LinkdingService.cs index c9ae909..d7c5282 100644 --- a/src/Services/Linkding.Client/LinkdingService.cs +++ b/src/Services/Linkding.Client/LinkdingService.cs @@ -1,5 +1,7 @@ using System.Net.Http.Headers; using System.Net.Http.Json; +using System.Text; +using System.Text.Json; using AutoMapper; using Core.Entities.Linkding; using Linkding.Client.Options; @@ -86,9 +88,24 @@ public class LinkdingService : ILinkdingService await AddBookmarkAsync(bookmark); } } - + public async Task AddBookmarkAsync(BookmarkCreatePayload bookmark) { + var content = JsonSerializer.Serialize(bookmark); + var requestContent = new StringContent(content, Encoding.UTF8, "application/json"); + var uri = $"/api/bookmarks/"; + + try + { + var response = await _client.PostAsync(uri, requestContent); + response.EnsureSuccessStatusCode(); + } + catch (Exception e) + { + Console.WriteLine(e); + // throw; + } + var result = await _client.PostAsJsonAsync($"/api/bookmarks/", bookmark); if (result.IsSuccessStatusCode) { @@ -107,7 +124,7 @@ public class LinkdingService : ILinkdingService try { var payload = _mapper.Map(bookmark); - await UpdateBookmarkAsync(payload); + await UpdateBookmarkAsync(bookmark.Id, payload); } catch (Exception e) { @@ -116,25 +133,22 @@ public class LinkdingService : ILinkdingService } } } - - public async Task UpdateBookmarkCollectionAsync(IEnumerable bookmarks) + + public async Task UpdateBookmarkAsync(int id, BookmarkUpdatePayload bookmark) { - foreach (var bookmark in bookmarks) - { - await UpdateBookmarkAsync(bookmark); - } - } + var content = JsonSerializer.Serialize(bookmark); + var requestContent = new StringContent(content, Encoding.UTF8, "application/json"); + var uri = $"/api/bookmarks/{id}/";// Path.Combine("api/bookmarks", $"{id}"); - public async Task UpdateBookmarkAsync(BookmarkUpdatePayload bookmark) - { - var result = await _client.PutAsJsonAsync($"/api/bookmarks/{bookmark.Id}/", bookmark); - if (result.IsSuccessStatusCode) + try { - + var response = await _client.PutAsync(uri, requestContent); + response.EnsureSuccessStatusCode(); } - else + catch (Exception e) { - + Console.WriteLine(e); + // throw; } } diff --git a/src/Wallabag/Wallabag.csproj b/src/Wallabag/Wallabag.csproj index 83888e0..4ef9ddd 100644 --- a/src/Wallabag/Wallabag.csproj +++ b/src/Wallabag/Wallabag.csproj @@ -27,4 +27,10 @@ PreserveNewest + + + + Always + + diff --git a/src/Wallabag/config.yml b/src/Wallabag/data/config.yml similarity index 100% rename from src/Wallabag/config.yml rename to src/Wallabag/data/config.yml