From b7db9c18e8f508edf40ea8dae258be6eb2898bbb Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Wed, 24 Jan 2024 18:53:39 +0100 Subject: [PATCH] Escape arguments. --- .../Directory.Build.props | 2 +- .../Squidex.ClientLibrary/ContentsClient.cs | 28 ++++++++++--------- .../ExtendableRulesClient.cs | 6 ++-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/csharp/Squidex.ClientLibrary/Directory.Build.props b/csharp/Squidex.ClientLibrary/Directory.Build.props index ad8f43e..af1e647 100644 --- a/csharp/Squidex.ClientLibrary/Directory.Build.props +++ b/csharp/Squidex.ClientLibrary/Directory.Build.props @@ -15,7 +15,7 @@ Squidex HeadlessCMS true snupkg - 19.0.0 + 19.1.0 diff --git a/csharp/Squidex.ClientLibrary/Squidex.ClientLibrary/ContentsClient.cs b/csharp/Squidex.ClientLibrary/Squidex.ClientLibrary/ContentsClient.cs index 638a3f1..0371d24 100644 --- a/csharp/Squidex.ClientLibrary/Squidex.ClientLibrary/ContentsClient.cs +++ b/csharp/Squidex.ClientLibrary/Squidex.ClientLibrary/ContentsClient.cs @@ -151,7 +151,7 @@ public Task GetAsync(string id, QueryContext? context = null, { Guard.NotNullOrEmpty(id, nameof(id)); - return RequestJsonAsync(HttpMethod.Get, BuildUrl($"{id}/", true, context), null, context, ct); + return RequestJsonAsync(HttpMethod.Get, BuildUrl($"{Uri.EscapeDataString(id)}/", true, context), null, context, ct); } /// @@ -160,7 +160,7 @@ public Task GetAsync(string id, long version, QueryContext? context = n { Guard.NotNullOrEmpty(id, nameof(id)); - return RequestJsonAsync(HttpMethod.Get, BuildUrl($"{id}/?version={version}", true, context), null, context, ct); + return RequestJsonAsync(HttpMethod.Get, BuildUrl($"{Uri.EscapeDataString(id)}/?version={version}", true, context), null, context, ct); } /// @@ -180,7 +180,7 @@ public Task> GetReferencingAsync(string id, Conte var q = query?.ToQuery(true, Options) ?? string.Empty; - return RequestJsonAsync>(HttpMethod.Get, BuildUrl($"{id}/referencing{q}", true, context), null, context, ct); + return RequestJsonAsync>(HttpMethod.Get, BuildUrl($"{Uri.EscapeDataString(id)}/referencing{q}", true, context), null, context, ct); } /// @@ -200,7 +200,7 @@ public Task> GetReferencesAsync(string id, Conten var q = query?.ToQuery(true, Options) ?? string.Empty; - return RequestJsonAsync>(HttpMethod.Get, BuildUrl($"{id}/references{q}", true, context), null, context, ct); + return RequestJsonAsync>(HttpMethod.Get, BuildUrl($"{Uri.EscapeDataString(id)}/references{q}", true, context), null, context, ct); } /// @@ -209,7 +209,9 @@ public Task CreateAsync(TData data, ContentCreateOptions options = defa { Guard.NotNull(data, nameof(data)); - return RequestJsonAsync(HttpMethod.Post, BuildUrl($"?publish={options.Publish}&id={options.Id ?? string.Empty}", false), data.ToContent(Options), context, ct); + var id = options.Id ?? string.Empty; + + return RequestJsonAsync(HttpMethod.Post, BuildUrl($"?publish={options.Publish}&id={Uri.EscapeDataString(id)}", false), data.ToContent(Options), context, ct); } /// @@ -218,7 +220,7 @@ public Task CreateDraftAsync(string id, ContentCreateDraftOptions optio { Guard.NotNullOrEmpty(id, nameof(id)); - return RequestJsonAsync(HttpMethod.Post, BuildUrl($"{id}/draft", false), null, context, ct); + return RequestJsonAsync(HttpMethod.Post, BuildUrl($"{Uri.EscapeDataString(id)}/draft", false), null, context, ct); } /// @@ -237,7 +239,7 @@ public Task ChangeStatusAsync(string id, ChangeStatus request, QueryCon Guard.NotNull(id, nameof(id)); Guard.NotNull(request, nameof(request)); - return RequestJsonAsync(HttpMethod.Put, BuildUrl($"{id}/status", false), request.ToContent(Options), context, ct); + return RequestJsonAsync(HttpMethod.Put, BuildUrl($"{Uri.EscapeDataString(id)}/status", false), request.ToContent(Options), context, ct); } /// @@ -256,7 +258,7 @@ public Task PatchAsync(string id, TPatch patch, ContentPatchOpt Guard.NotNullOrEmpty(id, nameof(id)); Guard.NotNull(patch, nameof(patch)); - return RequestJsonAsync(HttpMethodEx.Patch, BuildUrl($"{id}/", false), patch.ToContent(Options), context, ct); + return RequestJsonAsync(HttpMethodEx.Patch, BuildUrl($"{Uri.EscapeDataString(id)}/", false), patch.ToContent(Options), context, ct); } /// @@ -275,7 +277,7 @@ public Task UpsertAsync(string id, TData data, ContentUpsertOptions opt Guard.NotNullOrEmpty(id, nameof(id)); Guard.NotNull(data, nameof(data)); - return RequestJsonAsync(HttpMethod.Post, BuildUrl($"{id}?publish={options.Publish}&patch={options.Patch}&enrichDefaults={options.EnrichDefaults}", false), data.ToContent(Options), context, ct); + return RequestJsonAsync(HttpMethod.Post, BuildUrl($"{Uri.EscapeDataString(id)}?publish={options.Publish}&patch={options.Patch}&enrichDefaults={options.EnrichDefaults}", false), data.ToContent(Options), context, ct); } /// @@ -294,7 +296,7 @@ public async Task UpdateAsync(string id, TData data, ContentUpdateOptio Guard.NotNullOrEmpty(id, nameof(id)); Guard.NotNull(data, nameof(data)); - return await RequestJsonAsync(HttpMethod.Put, BuildUrl($"{id}?enrichDefaults={options.EnrichDefaults}", false), data.ToContent(Options), context, ct); + return await RequestJsonAsync(HttpMethod.Put, BuildUrl($"{Uri.EscapeDataString(id)}?enrichDefaults={options.EnrichDefaults}", false), data.ToContent(Options), context, ct); } /// @@ -312,7 +314,7 @@ public async Task EnrichDefaultsAsync(string id, ContentEnrichDefaultsO { Guard.NotNullOrEmpty(id, nameof(id)); - return await RequestJsonAsync(HttpMethod.Put, BuildUrl($"{id}/defaults", false), null, context, ct); + return await RequestJsonAsync(HttpMethod.Put, BuildUrl($"{Uri.EscapeDataString(id)}/defaults", false), null, context, ct); } /// @@ -330,7 +332,7 @@ public Task DeleteAsync(string id, ContentDeleteOptions options = default, { Guard.NotNullOrEmpty(id, nameof(id)); - return RequestAsync(HttpMethod.Delete, BuildUrl($"{id}?permanent={options.Permanent}&checkReferrers={options.CheckReferrers}", false), null, null, ct); + return RequestAsync(HttpMethod.Delete, BuildUrl($"{Uri.EscapeDataString(id)}?permanent={options.Permanent}&checkReferrers={options.CheckReferrers}", false), null, null, ct); } /// @@ -348,7 +350,7 @@ public Task DeleteDraftAsync(string id, ContentDeleteDraftOptions optio { Guard.NotNullOrEmpty(id, nameof(id)); - return RequestJsonAsync(HttpMethod.Delete, BuildUrl($"{id}/draft", false), null, context, ct); + return RequestJsonAsync(HttpMethod.Delete, BuildUrl($"{Uri.EscapeDataString(id)}/draft", false), null, context, ct); } /// diff --git a/csharp/Squidex.ClientLibrary/Squidex.ClientLibrary/ExtendableRulesClient.cs b/csharp/Squidex.ClientLibrary/Squidex.ClientLibrary/ExtendableRulesClient.cs index f85d88f..1b88927 100644 --- a/csharp/Squidex.ClientLibrary/Squidex.ClientLibrary/ExtendableRulesClient.cs +++ b/csharp/Squidex.ClientLibrary/Squidex.ClientLibrary/ExtendableRulesClient.cs @@ -50,7 +50,7 @@ public Task UpdateRuleAsync(string id, UpdateExtendableRuleDt Guard.NotNullOrEmpty(id, nameof(id)); Guard.NotNull(request, nameof(request)); - return RequestJsonAsync(HttpMethod.Put, BuildUrl($"{id}"), request.ToContent(Options), null, ct); + return RequestJsonAsync(HttpMethod.Put, BuildUrl($"{Uri.EscapeDataString(id)}"), request.ToContent(Options), null, ct); } /// @@ -59,7 +59,7 @@ public Task EnableRuleAsync(string id, { Guard.NotNullOrEmpty(id, nameof(id)); - return RequestJsonAsync(HttpMethod.Put, BuildUrl($"{id}/enable"), null, null, ct); + return RequestJsonAsync(HttpMethod.Put, BuildUrl($"{Uri.EscapeDataString(id)}/enable"), null, null, ct); } /// @@ -68,7 +68,7 @@ public Task DisableRuleAsync(string id, { Guard.NotNullOrEmpty(id, nameof(id)); - return RequestJsonAsync(HttpMethod.Put, BuildUrl($"{id}/disable"), null, null, ct); + return RequestJsonAsync(HttpMethod.Put, BuildUrl($"{Uri.EscapeDataString(id)}/disable"), null, null, ct); } ///