1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package io.wcm.handler.mediasource.ngdm.impl.metadata;
21
22 import static io.wcm.handler.mediasource.ngdm.impl.NextGenDynamicMediaConfigService.PLACEHOLDER_ASSET_ID;
23
24 import org.apache.commons.lang3.StringUtils;
25 import org.jetbrains.annotations.NotNull;
26 import org.jetbrains.annotations.Nullable;
27
28 import io.wcm.handler.mediasource.ngdm.impl.NextGenDynamicMediaConfigService;
29 import io.wcm.handler.mediasource.ngdm.impl.NextGenDynamicMediaReference;
30
31
32
33
34
35
36
37
38
39 final class NextGenDynamicMediaMetadataUrlBuilder {
40
41 private final NextGenDynamicMediaConfigService config;
42
43
44
45
46 NextGenDynamicMediaMetadataUrlBuilder(@NotNull NextGenDynamicMediaConfigService config) {
47 this.config = config;
48 }
49
50
51
52
53
54 public @Nullable String build(@NotNull NextGenDynamicMediaReference reference) {
55
56
57 String repositoryId;
58 if (reference.isLocal()) {
59 repositoryId = config.getLocalAssetsRepositoryId();
60 }
61 else {
62 repositoryId = config.getRemoteAssetsRepositoryId();
63 }
64 String metadataPath = config.getAssetMetadataPath();
65 if (StringUtils.isAnyEmpty(repositoryId, metadataPath)) {
66 return null;
67 }
68
69
70 metadataPath = StringUtils.replace(metadataPath, PLACEHOLDER_ASSET_ID, reference.getAssetId());
71
72
73 StringBuilder url = new StringBuilder();
74 if (StringUtils.startsWith(repositoryId, "localhost:")) {
75
76 url.append("http");
77 }
78 else {
79 url.append("https");
80 }
81 url.append("://")
82 .append(repositoryId)
83 .append(metadataPath);
84 return url.toString();
85 }
86
87 }