DCAE-D be initial commit
[sdc/dcae-d/dt-be-main.git] / dcaedt_catalog / asdc / src / main / java / org / onap / sdc / dcae / utils / SdcRestClientUtils.java
1 package org.onap.sdc.dcae.utils;
2
3 import com.fasterxml.jackson.core.JsonProcessingException;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5
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;
11
12 import java.net.URI;
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;
18
19 public class SdcRestClientUtils {
20
21     private static final String SDC_CATALOG_PATH = "/sdc/v1/catalog/";
22
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()));
29         }
30         String fragment = configUri.getFragment();
31         if (fragment == null)
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);
34         try {
35             userInfoMap.put(SdcConsumerInfo.CATALOG_URL, new URI(configUri.getScheme(), null, configUri.getHost(), configUri.getPort(), configUri.getPath()+SDC_CATALOG_PATH, null, null).toString());
36         }
37         catch (URISyntaxException se) {
38             throw new IllegalArgumentException("Invalid uri", se);
39         }
40         return userInfoMap;
41     }
42
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("&"));
52     }
53
54     public static UserRemarks buildUserRemarksObject(String userRemarks) {
55         return new UserRemarks(userRemarks);
56     }
57
58     private static class UserRemarks {
59         private String userRemarks;
60
61         private UserRemarks(String userRemarks) {
62             this.userRemarks = userRemarks;
63         }
64
65         public String getUserRemarks() {
66             return userRemarks;
67         }
68     }
69
70     public static String artifactToString(Artifact artifact) throws JsonProcessingException {
71         ObjectMapper mapper = new ObjectMapper();
72         return mapper.writeValueAsString(artifact);
73     }
74
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));
83         return artifact;
84     }
85 }