diff --git a/server/src/main/java/org/eclipse/openvsx/LocalRegistryService.java b/server/src/main/java/org/eclipse/openvsx/LocalRegistryService.java index 88df9c996..69cd46666 100644 --- a/server/src/main/java/org/eclipse/openvsx/LocalRegistryService.java +++ b/server/src/main/java/org/eclipse/openvsx/LocalRegistryService.java @@ -111,7 +111,9 @@ public ExtensionJson getExtension(String namespace, String extensionName, String public ExtensionJson getExtension(String namespace, String extensionName, String targetPlatform, String version) { var extVersion = findExtensionVersion(namespace, extensionName, targetPlatform, version); var json = toExtensionVersionJson(extVersion, targetPlatform, true, false); + var extension = repositories.findExtension(extensionName, namespace); json.downloads = getDownloads(extVersion.getExtension(), targetPlatform, extVersion.getVersion()); + json.averageRating = extension.getAverageRating(); return json; } @@ -772,6 +774,7 @@ private List toSearchEntries(SearchHits search .map(e -> { var entry = e.getValue().toSearchEntryJson(); entry.url = createApiUrl(serverUrl, "api", entry.namespace, entry.name); + entry.averageRating = repositories.findExtension(entry.name, entry.namespace).getAverageRating(); return new AbstractMap.SimpleEntry<>(e.getKey(), entry); }) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); diff --git a/server/src/main/java/org/eclipse/openvsx/RegistryAPI.java b/server/src/main/java/org/eclipse/openvsx/RegistryAPI.java index 9326741a4..448470e7f 100644 --- a/server/src/main/java/org/eclipse/openvsx/RegistryAPI.java +++ b/server/src/main/java/org/eclipse/openvsx/RegistryAPI.java @@ -627,7 +627,7 @@ public ResponseEntity getReviews( for (var registry : getRegistries()) { try { return ResponseEntity.ok() - .cacheControl(CacheControl.maxAge(10, TimeUnit.MINUTES).cachePublic()) + .cacheControl(CacheControl.noCache().cachePublic()) .body(registry.getReviews(namespace, extension)); } catch (NotFoundException exc) { // Try the next registry @@ -745,7 +745,7 @@ public ResponseEntity search( } return ResponseEntity.ok() - .cacheControl(CacheControl.maxAge(10, TimeUnit.MINUTES).cachePublic()) + .cacheControl(CacheControl.noCache().cachePublic()) .body(result); } diff --git a/server/src/main/java/org/eclipse/openvsx/cache/CacheService.java b/server/src/main/java/org/eclipse/openvsx/cache/CacheService.java index ddea14674..ef2525cfe 100644 --- a/server/src/main/java/org/eclipse/openvsx/cache/CacheService.java +++ b/server/src/main/java/org/eclipse/openvsx/cache/CacheService.java @@ -15,6 +15,7 @@ import org.eclipse.openvsx.repositories.RepositoryService; import org.eclipse.openvsx.util.TargetPlatform; import org.eclipse.openvsx.util.VersionAlias; +import org.eclipse.openvsx.util.UrlUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.CacheManager; import org.springframework.stereotype.Component; diff --git a/server/src/main/java/org/eclipse/openvsx/web/ShallowEtagHeaderFilter.java b/server/src/main/java/org/eclipse/openvsx/web/ShallowEtagHeaderFilter.java index f4e48560c..915fd3ae9 100644 --- a/server/src/main/java/org/eclipse/openvsx/web/ShallowEtagHeaderFilter.java +++ b/server/src/main/java/org/eclipse/openvsx/web/ShallowEtagHeaderFilter.java @@ -16,16 +16,12 @@ public class ShallowEtagHeaderFilter extends org.springframework.web.filter.Shal protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException { // limit the filter to /api/{namespace}/{extension}, /api/{namespace}/details - // and /api/{namespace}/{extension}/{version} endpoints + // and /api/{namespace}/{extension}/{version}, and /api/-/search endpoints var path = request.getRequestURI().substring(1).split("/"); - var applyFilter = path.length == 3 || path.length == 4; - if(applyFilter) { - applyFilter = path[0].equals("api") && !path[1].equals("-"); + var applyFilter = (path.length == 3 || path.length == 4) && path[0].equals("api"); + if(applyFilter && path[1].equals("-")) { + applyFilter = path[2].contains("search"); } - if(applyFilter && path.length == 4) { - applyFilter = !(path[3].equals("review") || path[3].equals("reviews")); - } - return !applyFilter; } } diff --git a/webui/src/pages/extension-detail/extension-review-dialog.tsx b/webui/src/pages/extension-detail/extension-review-dialog.tsx index 1488aecaf..cea2e7a05 100644 --- a/webui/src/pages/extension-detail/extension-review-dialog.tsx +++ b/webui/src/pages/extension-detail/extension-review-dialog.tsx @@ -109,9 +109,9 @@ class ExtensionReviewDialogComponent extends React.Component - + )} {this.props.extension.displayName || this.props.extension.name} Review