1 package org.onap.sdc.dcae.utils;
3 import com.fasterxml.jackson.core.JsonProcessingException;
4 import com.fasterxml.jackson.databind.ObjectMapper;
6 import org.onap.sdc.dcae.composition.restmodels.sdc.Artifact;
7 import org.onap.sdc.dcae.enums.ArtifactGroupType;
8 import org.onap.sdc.dcae.enums.SdcConsumerInfo;
9 import org.springframework.util.Base64Utils;
10 import org.springframework.util.StringUtils;
13 import java.net.URISyntaxException;
14 import java.util.ArrayList;
15 import java.util.EnumMap;
16 import java.util.List;
17 import java.util.stream.Collectors;
19 public class SdcRestClientUtils {
21 private static final String SDC_CATALOG_PATH = "/sdc/v1/catalog/";
23 // TODO consider moving params elsewhere (user/password/instanceId can be constant)
24 public static EnumMap<SdcConsumerInfo, String> extractConsumerInfoFromUri(URI configUri) {
25 EnumMap<SdcConsumerInfo, String> userInfoMap = new EnumMap<>(SdcConsumerInfo.class);
26 String userInfo = configUri.getUserInfo();
27 if (userInfo != null) {
28 userInfoMap.put(SdcConsumerInfo.AUTH, "Basic "+ Base64Utils.encodeToString(userInfo.getBytes()));
30 String fragment = configUri.getFragment();
32 throw new IllegalArgumentException("The URI must contain a fragment specification, to be used as SDC instance id");
33 userInfoMap.put(SdcConsumerInfo.INSTANCE_ID, fragment);
35 userInfoMap.put(SdcConsumerInfo.CATALOG_URL, new URI(configUri.getScheme(), null, configUri.getHost(), configUri.getPort(), configUri.getPath()+SDC_CATALOG_PATH, null, null).toString());
37 catch (URISyntaxException se) {
38 throw new IllegalArgumentException("Invalid uri", se);
43 public static String buildResourceFilterQuery(String resourceType, String category, String subcategory) {
44 List<String> filters = new ArrayList<>();
45 if(!StringUtils.isEmpty(resourceType))
46 filters.add("resourceType="+resourceType);
47 if(!StringUtils.isEmpty(category))
48 filters.add("category="+category);
49 if(!StringUtils.isEmpty(subcategory))
50 filters.add("subCategory="+subcategory);
51 return "?"+filters.stream().collect(Collectors.joining("&"));
54 public static UserRemarks buildUserRemarksObject(String userRemarks) {
55 return new UserRemarks(userRemarks);
58 private static class UserRemarks {
59 private String userRemarks;
61 private UserRemarks(String userRemarks) {
62 this.userRemarks = userRemarks;
65 public String getUserRemarks() {
70 public static String artifactToString(Artifact artifact) throws JsonProcessingException {
71 ObjectMapper mapper = new ObjectMapper();
72 return mapper.writeValueAsString(artifact);
75 public static Artifact generateDeploymentArtifact(String description, String name, String type, String label, byte[] payload){
76 Artifact artifact = new Artifact();
77 artifact.setDescription(description);
78 artifact.setArtifactName(name);
79 artifact.setArtifactGroupType(ArtifactGroupType.DEPLOYMENT.name());
80 artifact.setArtifactType(type);
81 artifact.setArtifactLabel(label);
82 artifact.setPayloadData(Base64Utils.encodeToString(payload));