Skip to content

Commit 0d2ef2a

Browse files
committed
feat: add field downloadUrl for recommended js library
1 parent 0429554 commit 0d2ef2a

File tree

3 files changed

+38
-14
lines changed

3 files changed

+38
-14
lines changed

server/api-service/openblocks-server/src/main/java/com/openblocks/api/misc/JsLibraryController.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import java.util.Optional;
1212
import java.util.concurrent.ConcurrentHashMap;
1313
import java.util.concurrent.ConcurrentMap;
14+
import java.util.function.Function;
15+
import java.util.stream.Collectors;
1416

1517
import org.apache.commons.collections4.CollectionUtils;
1618
import org.apache.commons.collections4.MapUtils;
@@ -24,12 +26,14 @@
2426
import org.springframework.web.bind.annotation.RestController;
2527
import org.springframework.web.reactive.function.client.ExchangeStrategies;
2628

29+
import com.fasterxml.jackson.core.type.TypeReference;
2730
import com.google.common.cache.CacheBuilder;
2831
import com.google.common.cache.CacheLoader;
2932
import com.google.common.cache.LoadingCache;
3033
import com.openblocks.api.framework.view.ResponseView;
3134
import com.openblocks.infra.constant.NewUrl;
3235
import com.openblocks.infra.localcache.ReloadableCache;
36+
import com.openblocks.sdk.util.JsonUtils;
3337
import com.openblocks.sdk.webclient.WebClientBuildHelper;
3438

3539
import lombok.Builder;
@@ -63,19 +67,25 @@ public Mono<JsLibraryMeta> load(@NotNull String key) {
6367
.build();
6468

6569
static {
66-
try (InputStream is = JsLibraryController.class.getClassLoader().getResourceAsStream("recommendedJsLibraries")) {
70+
try (InputStream is = JsLibraryController.class.getClassLoader().getResourceAsStream("recommendedJsLibraries.json")) {
6771
if (is != null) {
68-
List<String> names = IOUtils.readLines(is, Charset.defaultCharset());
69-
log.info("find recommended js library names: {}", names);
70-
for (String libName : names) {
72+
String content = IOUtils.toString(is, Charset.defaultCharset());
73+
List<Map<String, Object>> recommendedJsLibraries = JsonUtils.fromJsonSafely(content, new TypeReference<>() {
74+
}, Collections.emptyList());
75+
Map<String, Map<String, Object>> recommendedJsLibraryMap = recommendedJsLibraries.stream()
76+
.collect(Collectors.toMap(map -> MapUtils.getString(map, "name"), Function.identity()));
77+
78+
log.info("find recommended js library names: {}", recommendedJsLibraryMap.keySet());
79+
for (String libName : recommendedJsLibraryMap.keySet()) {
7180
ReloadableCache<JsLibraryMeta> reloadableCache = ReloadableCache.<JsLibraryMeta> newBuilder()
7281
.setName(libName)
7382
.setInterval(Duration.ofDays(1))
74-
.setFactory(() -> {
75-
Mono<JsLibraryMeta> fetch = fetch(libName);
76-
log.info("reloaded recommended js library: {}", libName);
77-
return fetch;
78-
})
83+
.setFactory(() -> fetch(libName)
84+
.doOnNext(jsLibraryMeta -> {
85+
Map<String, Object> map = recommendedJsLibraryMap.get(libName);
86+
jsLibraryMeta.setDownloadUrl(MapUtils.getString(map, "downloadUrl"));
87+
})
88+
.doOnNext(jsLibraryMeta -> log.info("reloaded recommended js library: {}", JsonUtils.toJson(jsLibraryMeta))))
7989
.build();
8090
RECOMMENDED_JS_LIB_META_CACHE.put(libName, reloadableCache);
8191
}
@@ -154,5 +164,6 @@ public static class JsLibraryMeta {
154164
private String latestVersion;
155165
private String homepage;
156166
private String description;
167+
private String downloadUrl;
157168
}
158169
}

server/api-service/openblocks-server/src/main/resources/recommendedJsLibraries

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
[
2+
{
3+
"name": "jspdf",
4+
"downloadUrl": "https://unpkg.com/jspdf/dist/jspdf.umd.min.js"
5+
},
6+
{
7+
"name": "jmespath",
8+
"downloadUrl": "https://unpkg.com/jmespath/jmespath.js"
9+
},
10+
{
11+
"name": "jsonpath",
12+
"downloadUrl": "https://unpkg.com/jsonpath/jsonpath.js"
13+
},
14+
{
15+
"name": "i18next",
16+
"downloadUrl": "https://unpkg.com/i18next/dist/umd/i18next.min.js"
17+
}
18+
]

0 commit comments

Comments
 (0)