use of org.hl7.gravity.refimpl.sdohexchange.exception.AuthClientException in project Gravity-SDOH-Exchange-RI by FHIR.
the class TaskService method readAll.
public List<TaskDto> readAll() throws AuthClientException {
List<Server> serverList = serverRepository.findAll();
List<TaskDto> taskDtoList = new ArrayList<>();
for (Server server : serverList) {
IGenericClient fhirClient = fhirContext.newRestfulGenericClient(server.getFhirServerUrl());
// Doesn't support now
// fhirClient.registerInterceptor(new BearerTokenAuthInterceptor(
// authorizationClient.getTokenResponse(URI.create(server.getAuthServerUrl()), server.getClientId(),
// server.getClientSecret(), SCOPE)
// .getAccessToken()));
TaskRepository taskRepository = new TaskRepository(fhirClient, applicationUrl);
taskDtoList.addAll(new TaskBundleToDtoConverter(server.getId()).convert(taskRepository.findAllTasks()));
}
return taskDtoList;
}
use of org.hl7.gravity.refimpl.sdohexchange.exception.AuthClientException in project Gravity-SDOH-Exchange-RI by FHIR.
the class AuthorizationClient method getTokenResponse.
/**
* Extract token endpoint url from the Authorization Server metadata endpoint and return token response after
* successful authentication.
*
* @param authServerUrl Authorization Server Base URL
* @param clientId OAuth2 Client ID
* @param secret OAuth2 Client Secret
* @param scope OAuth2 Client Scope
* @return {@link TokenResponse} entity
* @throws AuthClientException will be thrown if token retrieval fails
*/
public TokenResponse getTokenResponse(URI authServerUrl, String clientId, String secret, String scope) throws AuthClientException {
HttpEntity<MultiValueMap<String, String>> entity = createRequestEntity(clientId, secret, scope);
String tokenEndpoint = getTokenEndpoint(authServerUrl);
try {
return restTemplate.exchange(tokenEndpoint, HttpMethod.POST, entity, TokenResponse.class).getBody();
} catch (RestClientException e) {
throw new AuthClientException(e.getMessage(), e);
}
}
use of org.hl7.gravity.refimpl.sdohexchange.exception.AuthClientException in project Gravity-SDOH-Exchange-RI by FHIR.
the class ServerService method createServer.
@Transactional
public ServerDto createServer(NewServerDto newServerDto) throws AuthClientException {
if (serverRepository.findByServerName(newServerDto.getServerName()).isPresent()) {
throw new DuplicateServerNameNotAllowedException(newServerDto.getServerName());
}
Server server = modelMapper.map(newServerDto, Server.class);
// Just a validation of credentials.
authorizationClient.getTokenResponse(URI.create(newServerDto.getAuthServerUrl()), newServerDto.getClientId(), newServerDto.getClientSecret(), SCOPE);
serverRepository.save(server);
return modelMapper.map(server, ServerDto.class);
}
use of org.hl7.gravity.refimpl.sdohexchange.exception.AuthClientException in project Gravity-SDOH-Exchange-RI by FHIR.
the class ServerService method updateServer.
@Transactional
public ServerDto updateServer(Integer id, NewServerDto newServerDto) throws AuthClientException {
Server server = serverRepository.findById(id).orElseThrow(() -> new ServerNotFoundException(String.format("No Server was found by id '%s'", id)));
if (serverRepository.findByServerName(newServerDto.getServerName()).isPresent() && !server.getServerName().equals(newServerDto.getServerName())) {
throw new DuplicateServerNameNotAllowedException(newServerDto.getServerName());
}
// Just a validation of credentials.
authorizationClient.getTokenResponse(URI.create(newServerDto.getAuthServerUrl()), newServerDto.getClientId(), newServerDto.getClientSecret(), SCOPE);
modelMapper.map(newServerDto, server);
return modelMapper.map(server, ServerDto.class);
}
use of org.hl7.gravity.refimpl.sdohexchange.exception.AuthClientException in project Gravity-SDOH-Exchange-RI by FHIR.
the class TaskService method update.
public void update(String id, UpdateTaskRequestDto update) throws AuthClientException {
Server server = serverRepository.findById(update.getServerId()).orElseThrow(() -> new ServerNotFoundException(String.format("No server was found by id '%s'", update.getServerId())));
IGenericClient fhirClient = fhirContext.newRestfulGenericClient(server.getFhirServerUrl());
// Doesn't support now
// fhirClient.registerInterceptor(new BearerTokenAuthInterceptor(
// authorizationClient.getTokenResponse(URI.create(server.getAuthServerUrl()), server.getClientId(),
// server.getClientSecret(), SCOPE)
// .getAccessToken()));
TaskRepository taskRepository = new TaskRepository(fhirClient, applicationUrl);
// Validates and converts Procedure codes to Coding
List<Coding> procedureCodes = Optional.ofNullable(update.getProcedureCodes()).orElse(Collections.emptyList()).stream().map(code -> sdohMappings.findResourceCoding(Procedure.class, code)).collect(Collectors.toList());
Bundle taskBundle = taskRepository.find(id, Lists.newArrayList(Task.INCLUDE_FOCUS));
TaskInfoBundleExtractor.TaskInfoHolder taskInfo = new TaskInfoBundleExtractor().extract(taskBundle).stream().findFirst().orElseThrow(() -> new ResourceNotFoundException(new IdType(Task.class.getSimpleName(), id)));
TaskUpdateBundleFactory bundleFactory = new TaskUpdateBundleFactory();
bundleFactory.setTask(taskInfo.getTask());
bundleFactory.setStatus(update.getTaskStatus());
bundleFactory.setServiceRequest(taskInfo.getServiceRequest());
bundleFactory.setStatusReason(update.getStatusReason());
bundleFactory.setComment(update.getComment());
bundleFactory.setOutcome(update.getOutcome());
bundleFactory.setProcedureCodes(procedureCodes);
taskRepository.transaction(bundleFactory.createUpdateBundle());
}
Aggregations