.getByIssuerId(issuerId)
.flatMap(platformConfiguration ->
getPublicKeyData(platformConfiguration)
.map(publicKeyData -> {
setPlatformConfigurationServicePublicKeyData(platformConfiguration, publicKeyData); return publicKeyData;}))
.map(publicKeyData -> jwtHelper.getClaimsFromJWTToken(jwtToken, publicKeyData)) .map(claims -> {
RumbaRole rumbaRole = obtainRumbaRoleFromLTIRoles(claims);
String messageType = claims.get(Constants.CLAIM_PREFIX + "message_type", String.class);
LaunchRequestProviderType.getLaunchRequestProviderType(messageType)
.map(launchRequestProviderType -> launchRequestServiceLocator.getProvider(launchRequestProviderType))
.map(launchRequestService -> {
launchRequestService.validateLaunchRequest(claims);
launchRequestService.processRequest(claims)
.map(setLtiLaunchRequest())
}))
return claims;
private Mono<LTILaunchRequest<LTILaunchRequestSettings>> setLtiLaunchRequest(LTILaunchRequest<LTILaunchRequestSettings> ltiLaunchRequest) {
ltiLaunchRequest.setIssuer(issuerId);
ltiLaunchRequest.setOrganizationId(platformConfiguration.getRumbaDistrictId());
ltiLaunchRequest.setRumbaRole(rumbaRole);
return Mono.just(ltiLaunchRequest);
}