in Java/Embed for your customers/AppOwnsData/src/main/java/com/embedsample/appownsdata/services/PowerBIService.java [55:133]
public static EmbedConfig getEmbedConfig(String accessToken, String workspaceId, String reportId, String... additionalDatasetIds) throws JsonMappingException, JsonProcessingException {
if (reportId == null || reportId.isEmpty()) {
throw new RuntimeException("Empty Report Id");
}
if (workspaceId == null || workspaceId.isEmpty()) {
throw new RuntimeException("Empty Workspace Id");
}
// Get Report In Group API: https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/reports/{reportId}
StringBuilder urlStringBuilder = new StringBuilder("https://api.powerbi.com/v1.0/myorg/groups/");
urlStringBuilder.append(workspaceId);
urlStringBuilder.append("/reports/");
urlStringBuilder.append(reportId);
// Request header
HttpHeaders reqHeader = new HttpHeaders();
reqHeader.put("Content-Type", Arrays.asList("application/json"));
reqHeader.put("Authorization", Arrays.asList("Bearer " + accessToken));
// HTTP entity object - holds header and body
HttpEntity<String> reqEntity = new HttpEntity<> (reqHeader);
// REST API URL to get report details
String endPointUrl = urlStringBuilder.toString();
// Rest API get report's details
RestTemplate getReportRestTemplate = new RestTemplate();
ResponseEntity<String> response = getReportRestTemplate.exchange(endPointUrl, HttpMethod.GET, reqEntity, String.class);
HttpHeaders responseHeader = response.getHeaders();
String responseBody = response.getBody();
// Create embedding configuration object
EmbedConfig reportEmbedConfig = new EmbedConfig();
// Create Object Mapper to convert String into Object
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// Convert responseBody string into ReportConfig class object
ReportConfig embedReport = mapper.readValue(responseBody, ReportConfig.class);
// Add embed config to client response object
reportEmbedConfig.embedReports = new ArrayList<ReportConfig>();
reportEmbedConfig.embedReports.add(embedReport);
if (Config.DEBUG) {
// Get the request Id
List<String> reqIdList = responseHeader.get("RequestId");
// Log progress
logger.info("Retrieved report details");
// Log Request Id
if (reqIdList != null && !reqIdList.isEmpty()) {
for (String reqId: reqIdList) {
logger.info("Request Id: {}", reqId);
}
}
}
// Parse string into report object and get Report details
JSONObject responseObj = new JSONObject(responseBody);
// Create a list of DatasetIds
List<String> datasetIds = new ArrayList<String>();
datasetIds.add(responseObj.getString("datasetId"));
// Append to existing list of datasetIds to achieve dynamic binding later
for (String datasetId : additionalDatasetIds) {
datasetIds.add(datasetId);
System.out.println(datasetId);
}
// Get embed token
reportEmbedConfig.embedToken = PowerBIService.getEmbedToken(accessToken, reportId, datasetIds);
return reportEmbedConfig;
}