private static String generateLink(Map<String, String> request) throws Exception {
Map<String, String> headers = new HashMap<>();
headers.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
headers.put(JsonKey.AUTHORIZATION, JsonKey.BEARER + getAdminAccessToken());
ProjectLogger.log(
"KeycloakRequiredActionLinkUtil:generateLink: complete URL "
+ ProjectUtil.getConfigValue(JsonKey.SUNBIRD_SSO_URL)
+ "realms/"
+ ProjectUtil.getConfigValue(JsonKey.SUNBIRD_SSO_RELAM)
+ SUNBIRD_KEYCLOAK_REQD_ACTION_LINK,
LoggerEnum.INFO.name());
ProjectLogger.log(
"KeycloakRequiredActionLinkUtil:generateLink: request body "
+ mapper.writeValueAsString(request),
LoggerEnum.INFO.name());
RequestBodyEntity baseRequest =
Unirest.post(
ProjectUtil.getConfigValue(JsonKey.SUNBIRD_SSO_URL)
+ "realms/"
+ ProjectUtil.getConfigValue(JsonKey.SUNBIRD_SSO_RELAM)
+ SUNBIRD_KEYCLOAK_REQD_ACTION_LINK)
.headers(headers)
.body(mapper.writeValueAsString(request));
HttpResponse<JsonNode> response = baseRequest.asJson();
ProjectLogger.log(
"KeycloakRequiredActionLinkUtil:generateLink: Response status = "
+ response.getStatus()
+ " body "
+ response.getBody(),
LoggerEnum.INFO.name());
return response.getBody().getObject().getString(LINK);
}
protected Activity send(Activity activity) throws UnirestException, HttpResponseException, AuthenticationException {
log.info(String.format(
"Sending activity of type %s with activityId=%s, conversationId=%s with callbackUrl as %s",
activity.getType(), activity.getId(), activity.getConversation().getId(), activity.getServiceUrl()));
Jsonb jsonb = JsonbBuilder.create();
String jsonPayload = jsonb.toJson(activity);
log.debug("Sending payload: " + jsonPayload);
RequestBodyEntity request = Unirest.post(getBotUrl()).body(jsonPayload);
Map<String, List<String>> headers = request.getHttpRequest().getHeaders();
headers.put(CONTENT_TYPE_HEADER_KEY, Collections.singletonList(CONTENT_TYPE_APPLICATION_JSON));
if (hasAuthProperties()) {
JMeterVariables vars = getThreadContext().getVariables();
log.debug("Has security data");
if (vars.get(TOKEN) == null) {
log.debug("Token is null, authenticating");
TokenResponse tokenResponse = AuthHelper.getToken(getPropertyAsString(BotServiceSecurityConfig.APP_ID),
getPropertyAsString(BotServiceSecurityConfig.CLIENT_SECRET));
vars.put(TOKEN, tokenResponse.getAccessToken());
} else {
log.debug("Token is not null, will reuse it");
}
String token = vars.get(TOKEN);
headers.put(AUTHORIZATION_HEADER, Collections.singletonList("Bearer " + token));
} else {
log.debug("No security properties available. Will proceed without authentication.");
}
HttpResponse<InputStream> postResponse = request.asBinary();
ensureResponseSuccess(postResponse);
return activity;
}