From 40170a696d69bb954d368db0e6eaca2f563045d6 Mon Sep 17 00:00:00 2001 From: "Dieckman, Eric" Date: Thu, 15 Jul 2021 15:28:28 -0500 Subject: [PATCH 1/2] Implement Release query options. Add in an exception for Models/Releases in .gitignore. --- .gitignore | 4 ++++ .../Internal/Queries/ReleaseQueryBuilder.cs | 23 +++++++++++++++++++ .../Releases/Requests/ReleaseQueryOptions.cs | 16 +++++++++++++ .../Models/Releases/Requests/ReleasesOrder.cs | 8 +++++++ 4 files changed, 51 insertions(+) create mode 100644 src/GitLabApiClient/Models/Releases/Requests/ReleasesOrder.cs diff --git a/.gitignore b/.gitignore index aa64e316..b940f8a2 100755 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,10 @@ bld/ [Oo]bj/ [Ll]og/ +# opt-in include Releases folder - being ignored by Build results section below +!**/[Mm]odels/[Rr]eleases/ + + # Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot diff --git a/src/GitLabApiClient/Internal/Queries/ReleaseQueryBuilder.cs b/src/GitLabApiClient/Internal/Queries/ReleaseQueryBuilder.cs index bfb2e78e..4bf8401c 100644 --- a/src/GitLabApiClient/Internal/Queries/ReleaseQueryBuilder.cs +++ b/src/GitLabApiClient/Internal/Queries/ReleaseQueryBuilder.cs @@ -1,3 +1,5 @@ +using System; +using GitLabApiClient.Models; using GitLabApiClient.Models.Releases.Requests; namespace GitLabApiClient.Internal.Queries @@ -6,6 +8,27 @@ class ReleaseQueryBuilder : QueryBuilder { protected override void BuildCore(Query query, ReleaseQueryOptions options) { + if (options.Order != ReleasesOrder.ReleasedAt) + query.Add("order_by", GetReleasesOrderQueryValue(options.Order)); + + if (options.SortOrder != SortOrder.Descending) + query.Add("sort", GetSortOrderQueryValue(options.SortOrder)); + + if (options.IncludeHtmlDescription) + query.Add("include_html_description", true); + } + + private static string GetReleasesOrderQueryValue(ReleasesOrder order) + { + switch (order) + { + case ReleasesOrder.CreatedAt: + return "created_at"; + case ReleasesOrder.ReleasedAt: + return "released_at"; + default: + throw new NotSupportedException($"Order {order} is not supported"); + } } } } diff --git a/src/GitLabApiClient/Models/Releases/Requests/ReleaseQueryOptions.cs b/src/GitLabApiClient/Models/Releases/Requests/ReleaseQueryOptions.cs index 8e2c4446..529a70ab 100644 --- a/src/GitLabApiClient/Models/Releases/Requests/ReleaseQueryOptions.cs +++ b/src/GitLabApiClient/Models/Releases/Requests/ReleaseQueryOptions.cs @@ -5,5 +5,21 @@ public sealed class ReleaseQueryOptions internal ReleaseQueryOptions() { } + + /// + /// Specifies releases order. Default is Released At time. + /// + public ReleasesOrder Order { get; set; } + + /// + /// Specifies releases sort order. Default is descending. + /// + public SortOrder SortOrder { get; set; } + + /// + /// Response includes HTML rendered Markdown of the release description. + /// + public bool IncludeHtmlDescription { get; set; } = true; + } } diff --git a/src/GitLabApiClient/Models/Releases/Requests/ReleasesOrder.cs b/src/GitLabApiClient/Models/Releases/Requests/ReleasesOrder.cs new file mode 100644 index 00000000..9a2574c9 --- /dev/null +++ b/src/GitLabApiClient/Models/Releases/Requests/ReleasesOrder.cs @@ -0,0 +1,8 @@ +namespace GitLabApiClient.Models.Releases.Requests +{ + public enum ReleasesOrder + { + ReleasedAt, + CreatedAt + } +} From 50d427a988ff216d0d379af54b224afb9daa9d7c Mon Sep 17 00:00:00 2001 From: "Dieckman, Eric" Date: Fri, 22 Apr 2022 14:13:15 -0500 Subject: [PATCH 2/2] Remove the length check for personal access tokens. No longer valid as tokens have prefixes since v14.5 --- src/GitLabApiClient/Internal/Http/GitLabHttpFacade.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/GitLabApiClient/Internal/Http/GitLabHttpFacade.cs b/src/GitLabApiClient/Internal/Http/GitLabHttpFacade.cs index b9b1fc8b..93dbd681 100644 --- a/src/GitLabApiClient/Internal/Http/GitLabHttpFacade.cs +++ b/src/GitLabApiClient/Internal/Http/GitLabHttpFacade.cs @@ -36,14 +36,13 @@ public GitLabHttpFacade(string hostUrl, RequestsJsonSerializer jsonSerializer, s { case 0: break; - case 20: - _httpClient.DefaultRequestHeaders.Add(PrivateToken, authenticationToken); - break; case 64: _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authenticationToken); break; default: - throw new ArgumentException("Unsupported authentication token provide, please private an oauth or private token"); + _httpClient.DefaultRequestHeaders.Add(PrivateToken, authenticationToken); + break; + } }