From 5f6cc4999464c7eec8d323ecaf93b8f5703c8cd0 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Fri, 6 Dec 2024 14:23:01 -0500 Subject: [PATCH 1/6] modify filter query parameter IsLatestVersion and IsAbsoluteVersion to include eq true to resolve Artifactory issue --- src/code/V2ServerAPICalls.cs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/code/V2ServerAPICalls.cs b/src/code/V2ServerAPICalls.cs index 59b1a3ab4..8786111c8 100644 --- a/src/code/V2ServerAPICalls.cs +++ b/src/code/V2ServerAPICalls.cs @@ -355,7 +355,7 @@ public override FindResults FindName(string packageName, bool includePrerelease, filterBuilder.AddCriterion($"Id eq '{packageName}'"); } - filterBuilder.AddCriterion(includePrerelease ? "IsAbsoluteLatestVersion" : "IsLatestVersion"); + filterBuilder.AddCriterion(includePrerelease ? "IsAbsoluteLatestVersion eq true" : "IsLatestVersion eq true"); if (type != ResourceType.None) { filterBuilder.AddCriterion(GetTypeFilterForRequest(type)); } @@ -424,7 +424,7 @@ public override FindResults FindNameWithTag(string packageName, string[] tags, b filterBuilder.AddCriterion($"Id eq '{packageName}'"); } - filterBuilder.AddCriterion(includePrerelease ? "IsAbsoluteLatestVersion" : "IsLatestVersion"); + filterBuilder.AddCriterion(includePrerelease ? "IsAbsoluteLatestVersion eq true" : "IsLatestVersion eq true"); if (type != ResourceType.None) { filterBuilder.AddCriterion(GetTypeFilterForRequest(type)); } @@ -649,6 +649,10 @@ public override FindResults FindVersion(string packageName, string version, Reso if (!_isJFrogRepo) { filterBuilder.AddCriterion($"Id eq '{packageName}'"); } + else + { + + } filterBuilder.AddCriterion($"NormalizedVersion eq '{version}'"); if (type != ResourceType.None) { @@ -919,9 +923,9 @@ private string FindAllFromTypeEndPoint(bool includePrerelease, bool isSearchingM if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { - filterBuilder.AddCriterion("IsLatestVersion"); + filterBuilder.AddCriterion("IsLatestVersion eq true"); } var requestUrlV2 = $"{Repository.Uri}{typeEndpoint}/Search()?{queryBuilder.BuildQueryString()}"; return HttpRequestCall(requestUrlV2, out errRecord); @@ -959,9 +963,9 @@ private string FindTagFromEndpoint(string[] tags, bool includePrerelease, bool i if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { - filterBuilder.AddCriterion("IsLatestVersion"); + filterBuilder.AddCriterion("IsLatestVersion eq true"); } filterBuilder.AddCriterion($"substringof('PS{(isSearchingModule ? "Module" : "Script")}', Tags) eq true"); @@ -996,9 +1000,9 @@ private string FindCommandOrDscResource(string[] tags, bool includePrerelease, b if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { - filterBuilder.AddCriterion("IsLatestVersion"); + filterBuilder.AddCriterion("IsLatestVersion eq true"); } @@ -1038,12 +1042,11 @@ private string FindNameGlobbing(string packageName, ResourceType type, bool incl if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { - filterBuilder.AddCriterion("IsLatestVersion"); + filterBuilder.AddCriterion("IsLatestVersion eq true"); } - var names = packageName.Split(new char[] {'*'}, StringSplitOptions.RemoveEmptyEntries); if (names.Length == 0) @@ -1133,12 +1136,11 @@ private string FindNameGlobbingWithTag(string packageName, string[] tags, Resour if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { - filterBuilder.AddCriterion("IsLatestVersion"); + filterBuilder.AddCriterion("IsLatestVersion eq true"); } - var names = packageName.Split(new char[] {'*'}, StringSplitOptions.RemoveEmptyEntries); if (!_isPSGalleryRepo) From 2d7f3ef78a4c28c78ca8d61fc141e81f4b45d437 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Fri, 6 Dec 2024 16:47:27 -0500 Subject: [PATCH 2/6] for Search() based operations ADO can't handle eq true --- src/code/V2ServerAPICalls.cs | 86 ++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 18 deletions(-) diff --git a/src/code/V2ServerAPICalls.cs b/src/code/V2ServerAPICalls.cs index 8786111c8..a3fe0c936 100644 --- a/src/code/V2ServerAPICalls.cs +++ b/src/code/V2ServerAPICalls.cs @@ -917,16 +917,26 @@ private string FindAllFromTypeEndPoint(bool includePrerelease, bool isSearchingM } // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed + // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (_isJFrogRepo) { queryBuilder.SearchTerm = "''"; - } - if (includePrerelease) { - queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); - } else { - filterBuilder.AddCriterion("IsLatestVersion eq true"); + if (includePrerelease) { + queryBuilder.AdditionalParameters["includePrerelease"] = "true"; + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + } else { + filterBuilder.AddCriterion("IsLatestVersion eq true"); + } + } + else { + if (includePrerelease) { + queryBuilder.AdditionalParameters["includePrerelease"] = "true"; + filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + } else { + filterBuilder.AddCriterion("IsLatestVersion"); + } } + var requestUrlV2 = $"{Repository.Uri}{typeEndpoint}/Search()?{queryBuilder.BuildQueryString()}"; return HttpRequestCall(requestUrlV2, out errRecord); } @@ -956,17 +966,33 @@ private string FindTagFromEndpoint(string[] tags, bool includePrerelease, bool i queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } - // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed - if (_isJFrogRepo) { - queryBuilder.SearchTerm = "''"; - } - if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); } else { - filterBuilder.AddCriterion("IsLatestVersion eq true"); - } + filterBuilder.AddCriterion("IsLatestVersion"); + } + + // // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed + // // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only + // if (_isJFrogRepo) { + // queryBuilder.SearchTerm = "''"; + + // if (includePrerelease) { + // queryBuilder.AdditionalParameters["includePrerelease"] = "true"; + // filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + // } else { + // filterBuilder.AddCriterion("IsLatestVersion eq true"); + // } + // } + // else { + // if (includePrerelease) { + // queryBuilder.AdditionalParameters["includePrerelease"] = "true"; + // filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + // } else { + // filterBuilder.AddCriterion("IsLatestVersion"); + // } + // } filterBuilder.AddCriterion($"substringof('PS{(isSearchingModule ? "Module" : "Script")}', Tags) eq true"); @@ -1040,11 +1066,23 @@ private string FindNameGlobbing(string packageName, ResourceType type, bool incl queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } + // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed + // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + if (_isJFrogRepo) { + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + } + else { + filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + } } else { - filterBuilder.AddCriterion("IsLatestVersion eq true"); + if (_isJFrogRepo) { + filterBuilder.AddCriterion("IsLatestVersion eq true"); + } + else { + filterBuilder.AddCriterion("IsLatestVersion"); + } } var names = packageName.Split(new char[] {'*'}, StringSplitOptions.RemoveEmptyEntries); @@ -1134,11 +1172,23 @@ private string FindNameGlobbingWithTag(string packageName, string[] tags, Resour queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } + // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed + // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + if (_isJFrogRepo) { + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + } + else { + filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + } } else { - filterBuilder.AddCriterion("IsLatestVersion eq true"); + if (_isJFrogRepo) { + filterBuilder.AddCriterion("IsLatestVersion eq true"); + } + else { + filterBuilder.AddCriterion("IsLatestVersion"); + } } var names = packageName.Split(new char[] {'*'}, StringSplitOptions.RemoveEmptyEntries); From 74742517e92dca3cb082e53b56f4ae6047d5c1f6 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Fri, 6 Dec 2024 17:20:28 -0500 Subject: [PATCH 3/6] update filter for tag and commandbased search --- src/code/V2ServerAPICalls.cs | 55 ++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/code/V2ServerAPICalls.cs b/src/code/V2ServerAPICalls.cs index a3fe0c936..929e41406 100644 --- a/src/code/V2ServerAPICalls.cs +++ b/src/code/V2ServerAPICalls.cs @@ -966,33 +966,23 @@ private string FindTagFromEndpoint(string[] tags, bool includePrerelease, bool i queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } + // JFrog/Artifactory deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + if (_isJFrogRepo) { + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + } + else { + filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + } } else { - filterBuilder.AddCriterion("IsLatestVersion"); - } - - // // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed - // // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only - // if (_isJFrogRepo) { - // queryBuilder.SearchTerm = "''"; - - // if (includePrerelease) { - // queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - // filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); - // } else { - // filterBuilder.AddCriterion("IsLatestVersion eq true"); - // } - // } - // else { - // if (includePrerelease) { - // queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - // filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); - // } else { - // filterBuilder.AddCriterion("IsLatestVersion"); - // } - // } + if (_isJFrogRepo) { + filterBuilder.AddCriterion("IsLatestVersion eq true"); + } + else { + filterBuilder.AddCriterion("IsLatestVersion"); + } + } filterBuilder.AddCriterion($"substringof('PS{(isSearchingModule ? "Module" : "Script")}', Tags) eq true"); @@ -1024,14 +1014,24 @@ private string FindCommandOrDscResource(string[] tags, bool includePrerelease, b queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } + // JFrog/Artifactory deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; - filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + if (_isJFrogRepo) { + filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); + } + else { + filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); + } } else { - filterBuilder.AddCriterion("IsLatestVersion eq true"); + if (_isJFrogRepo) { + filterBuilder.AddCriterion("IsLatestVersion eq true"); + } + else { + filterBuilder.AddCriterion("IsLatestVersion"); + } } - // can only find from Modules endpoint var tagPrefix = isSearchingForCommands ? "PSCommand_" : "PSDscResource_"; @@ -1066,7 +1066,6 @@ private string FindNameGlobbing(string packageName, ResourceType type, bool incl queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } - // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; From 84c5dd85bf8874978c18ec4bd2dbf98ed8c3b53c Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Fri, 6 Dec 2024 17:22:51 -0500 Subject: [PATCH 4/6] remove accidentally added code --- src/code/V2ServerAPICalls.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/code/V2ServerAPICalls.cs b/src/code/V2ServerAPICalls.cs index 929e41406..1c381fb22 100644 --- a/src/code/V2ServerAPICalls.cs +++ b/src/code/V2ServerAPICalls.cs @@ -649,10 +649,6 @@ public override FindResults FindVersion(string packageName, string version, Reso if (!_isJFrogRepo) { filterBuilder.AddCriterion($"Id eq '{packageName}'"); } - else - { - - } filterBuilder.AddCriterion($"NormalizedVersion eq '{version}'"); if (type != ResourceType.None) { From 2b372e6c96559bd6612e50200009cee03e83b1f4 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Mon, 9 Dec 2024 15:26:42 -0500 Subject: [PATCH 5/6] fix my comments --- src/code/V2ServerAPICalls.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/code/V2ServerAPICalls.cs b/src/code/V2ServerAPICalls.cs index 1c381fb22..b2159ece2 100644 --- a/src/code/V2ServerAPICalls.cs +++ b/src/code/V2ServerAPICalls.cs @@ -913,7 +913,6 @@ private string FindAllFromTypeEndPoint(bool includePrerelease, bool isSearchingM } // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed - // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (_isJFrogRepo) { queryBuilder.SearchTerm = "''"; @@ -925,6 +924,7 @@ private string FindAllFromTypeEndPoint(bool includePrerelease, bool isSearchingM } } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); @@ -962,13 +962,13 @@ private string FindTagFromEndpoint(string[] tags, bool includePrerelease, bool i queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } - // JFrog/Artifactory deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; if (_isJFrogRepo) { filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); } } else { @@ -976,6 +976,7 @@ private string FindTagFromEndpoint(string[] tags, bool includePrerelease, bool i filterBuilder.AddCriterion("IsLatestVersion eq true"); } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only filterBuilder.AddCriterion("IsLatestVersion"); } } @@ -1010,13 +1011,13 @@ private string FindCommandOrDscResource(string[] tags, bool includePrerelease, b queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } - // JFrog/Artifactory deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; if (_isJFrogRepo) { filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); } } else { @@ -1024,6 +1025,7 @@ private string FindCommandOrDscResource(string[] tags, bool includePrerelease, b filterBuilder.AddCriterion("IsLatestVersion eq true"); } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only filterBuilder.AddCriterion("IsLatestVersion"); } } @@ -1062,13 +1064,13 @@ private string FindNameGlobbing(string packageName, ResourceType type, bool incl queryBuilder.AdditionalParameters["$orderby"] = "Id desc"; } - // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; if (_isJFrogRepo) { filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); } } else { @@ -1076,6 +1078,7 @@ private string FindNameGlobbing(string packageName, ResourceType type, bool incl filterBuilder.AddCriterion("IsLatestVersion eq true"); } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only filterBuilder.AddCriterion("IsLatestVersion"); } } @@ -1168,13 +1171,13 @@ private string FindNameGlobbingWithTag(string packageName, string[] tags, Resour } // JFrog/Artifactory requires an empty search term to enumerate all packages in the feed - // It also deems 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter to be a bad request, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; if (_isJFrogRepo) { filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only filterBuilder.AddCriterion("IsAbsoluteLatestVersion"); } } else { @@ -1182,6 +1185,7 @@ private string FindNameGlobbingWithTag(string packageName, string[] tags, Resour filterBuilder.AddCriterion("IsLatestVersion eq true"); } else { + // For ADO, 'IsLatestVersion eq true' and 'IsAbsoluteLatestVersion eq true' in the filter create a bad request error, so we use 'IsLatestVersion' or 'IsAbsoluteLatestVersion' only filterBuilder.AddCriterion("IsLatestVersion"); } } From 4aa8f3382d2c20089a1787bdc03162400b91607f Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Tue, 7 Jan 2025 12:50:31 -0500 Subject: [PATCH 6/6] add comment indicating the 'IsLatestVersion eq true' solution applies to JFrog but may also apply to other PMPs --- src/code/V2ServerAPICalls.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/code/V2ServerAPICalls.cs b/src/code/V2ServerAPICalls.cs index b2159ece2..38b5640de 100644 --- a/src/code/V2ServerAPICalls.cs +++ b/src/code/V2ServerAPICalls.cs @@ -918,8 +918,10 @@ private string FindAllFromTypeEndPoint(bool includePrerelease, bool isSearchingM if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsAbsoluteLatestVersion correctly filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsLatestVersion correctly filterBuilder.AddCriterion("IsLatestVersion eq true"); } } @@ -965,6 +967,7 @@ private string FindTagFromEndpoint(string[] tags, bool includePrerelease, bool i if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; if (_isJFrogRepo) { + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsAbsoluteLatestVersion correctly filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { @@ -1014,6 +1017,7 @@ private string FindCommandOrDscResource(string[] tags, bool includePrerelease, b if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; if (_isJFrogRepo) { + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsAbsoluteLatestVersion correctly filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { @@ -1022,6 +1026,7 @@ private string FindCommandOrDscResource(string[] tags, bool includePrerelease, b } } else { if (_isJFrogRepo) { + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsLatestVersion correctly filterBuilder.AddCriterion("IsLatestVersion eq true"); } else { @@ -1067,6 +1072,7 @@ private string FindNameGlobbing(string packageName, ResourceType type, bool incl if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; if (_isJFrogRepo) { + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsAbsoluteLatestVersion correctly filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { @@ -1075,6 +1081,7 @@ private string FindNameGlobbing(string packageName, ResourceType type, bool incl } } else { if (_isJFrogRepo) { + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsLatestVersion correctly filterBuilder.AddCriterion("IsLatestVersion eq true"); } else { @@ -1174,6 +1181,7 @@ private string FindNameGlobbingWithTag(string packageName, string[] tags, Resour if (includePrerelease) { queryBuilder.AdditionalParameters["includePrerelease"] = "true"; if (_isJFrogRepo) { + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsAbsoluteLatestVersion correctly filterBuilder.AddCriterion("IsAbsoluteLatestVersion eq true"); } else { @@ -1182,6 +1190,7 @@ private string FindNameGlobbingWithTag(string packageName, string[] tags, Resour } } else { if (_isJFrogRepo) { + // note: we add 'eq true' because some PMPs (currently we know of JFrog, but others may do this too) will proxy the query unedited to the upstream remote and if that's PSGallery, it doesn't handle IsLatestVersion correctly filterBuilder.AddCriterion("IsLatestVersion eq true"); } else {