Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ public ExtensionQueryResult rewriteUrls(ExtensionQueryResult json) {
.toList());
}

public ExtensionQueryResult.Extension rewriteUrls(ExtensionQueryResult.Extension json) {
return rewriteExtensionUrls(List.of(json)).getFirst();
}

private List<ExtensionQueryResult.Extension> rewriteExtensionUrls(List<ExtensionQueryResult.Extension> extensions) {
return extensions.stream()
.map(extension -> new ExtensionQueryResult.Extension(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,26 @@

public class DefaultExtensionQueryRequestHandler implements IExtensionQueryRequestHandler {

private LocalVSCodeService local;
private UpstreamVSCodeService upstream;
private final LocalVSCodeService local;
private final UpstreamVSCodeService upstream;
private final List<IVSCodeService> registries;

public DefaultExtensionQueryRequestHandler(LocalVSCodeService local, UpstreamVSCodeService upstream) {
this.local = local;
this.upstream = upstream;
this.registries = setupRegistries();
}

private List<IVSCodeService> setupRegistries() {
if (upstream.isValid()) {
return List.of(local, upstream);
} else {
return List.of(local);
}
}

private Iterable<IVSCodeService> getVSCodeServices() {
return registries;
}

@Override
Expand All @@ -38,7 +52,7 @@ public ExtensionQueryResult getResult(ExtensionQueryParam param, int pageSize, i
var service = services.next();
if(extensions.isEmpty()) {
var subResult = service.extensionQuery(param, defaultPageSize);
var subExtensions = subResult.results().get(0).extensions();
var subExtensions = subResult.results().getFirst().extensions();
if(subExtensions != null) {
extensions.addAll(subExtensions);
}
Expand All @@ -47,7 +61,7 @@ public ExtensionQueryResult getResult(ExtensionQueryParam param, int pageSize, i
} else {
var extensionCount = extensions.size();
var subResult = service.extensionQuery(param, defaultPageSize);
var subExtensions = subResult.results().get(0).extensions();
var subExtensions = subResult.results().getFirst().extensions();
var subExtensionsCount = subExtensions != null ? subExtensions.size() : 0;
if (subExtensionsCount > 0) {
int limit = pageSize - extensionCount;
Expand All @@ -66,18 +80,10 @@ public ExtensionQueryResult getResult(ExtensionQueryParam param, int pageSize, i
return local.toQueryResult(extensions, totalCount);
}

private Iterable<IVSCodeService> getVSCodeServices() {
var registries = new ArrayList<IVSCodeService>();
registries.add(local);
if (upstream.isValid())
registries.add(upstream);
return registries;
}

private void mergeExtensionQueryResults(List<ExtensionQueryResult.Extension> extensions, Set<String> extensionIds, List<ExtensionQueryResult.Extension> subExtensions, int limit) {
if(extensionIds.isEmpty() && !extensions.isEmpty()) {
var extensionIdSet = extensions.stream()
.map(extension -> NamingUtil.toExtensionId(extension))
.map(NamingUtil::toExtensionId)
.collect(Collectors.toSet());

extensionIds.addAll(extensionIdSet);
Expand All @@ -95,15 +101,15 @@ private void mergeExtensionQueryResults(List<ExtensionQueryResult.Extension> ext
}

private long getTotalCount(ExtensionQueryResult subResult) {
return subResult.results().get(0).resultMetadata().stream()
return subResult.results().getFirst().resultMetadata().stream()
.filter(metadata -> metadata.metadataType().equals("ResultCount"))
.findFirst()
.map(metadata -> metadata.metadataItems())
.map(ExtensionQueryResult.ResultMetadata::metadataItems)
.orElseGet(Collections::emptyList)
.stream()
.filter(item -> item.name().equals("TotalCount"))
.findFirst()
.map(item -> item.count())
.map(ExtensionQueryResult.ResultMetadataItem::count)
.orElse(0L);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,5 @@
package org.eclipse.openvsx.adapter;

public interface IExtensionQueryRequestHandler {

ExtensionQueryResult getResult(ExtensionQueryParam param, int pageSize, int defaultPageSize);
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;

public interface IVSCodeService {

ExtensionQueryResult extensionQuery(ExtensionQueryParam param, int defaultPageSize);

ExtensionQueryResult.Extension latest(String namespaceName, String extensionName);

ResponseEntity<StreamingResponseBody> browse(String namespaceName, String extensionName, String version, String path);

String download(String namespace, String extension, String version, String targetPlatform);
Expand Down
Loading
Loading