Skip to content

Commit

Permalink
Feature/nytt skjerming api (#3395)
Browse files Browse the repository at this point in the history
Endret til nytt skjerming-api
  • Loading branch information
stigus authored Jan 22, 2024
1 parent e092aec commit b24059d
Show file tree
Hide file tree
Showing 11 changed files with 49 additions and 95 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ public Flux<ClientFuture> gjenopprett(RsDollyUtvidetBestilling bestilling, Dolly
return Flux.empty();
}

@Override
public void release(List<String> identer) {

skjermingsRegisterConsumer.deleteSkjerming(identer)
.subscribe(response -> log.info("Slettet identer fra Skjermingsregisteret"));
}

private ClientFuture futurePersist(BestillingProgress progress, String status) {

return () -> {
Expand All @@ -63,13 +70,6 @@ private ClientFuture futurePersist(BestillingProgress progress, String status) {
};
}

@Override
public void release(List<String> identer) {

skjermingsRegisterConsumer.deleteSkjerming(identer)
.subscribe(response -> log.info("Slettet identer fra Skjermingsregisteret"));
}

private String getStatus(SkjermingDataResponse resultat) {

return isBlank(resultat.getError()) ? "OK" :
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import no.nav.dolly.bestilling.ConsumerStatus;
import no.nav.dolly.bestilling.skjermingsregister.command.SkjermingsregisterDeleteCommand;
import no.nav.dolly.bestilling.skjermingsregister.command.SkjermingsregisterGetCommand;
import no.nav.dolly.bestilling.skjermingsregister.command.SkjermingsregisterPostCommand;
import no.nav.dolly.bestilling.skjermingsregister.command.SkjermingsregisterPutCommand;
Expand All @@ -19,6 +18,7 @@
import reactor.core.publisher.Mono;

import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;

import static java.util.Objects.nonNull;
Expand Down Expand Up @@ -47,44 +47,47 @@ public SkjermingsRegisterConsumer(
.build();
}

@Timed(name = "providers", tags = {"operation", "skjermingsdata-slett"})
public Mono<List<Void>> deleteSkjerming(List<String> identer) {
@Timed(name = "providers", tags = { "operation", "skjermingsdata-slett" })
public Mono<List<SkjermingDataResponse>> deleteSkjerming(List<String> identer) {

return tokenService.exchange(serverProperties)
.flatMapMany(token -> Flux.range(0, identer.size())
.delayElements(Duration.ofMillis(100))
.map(index -> new SkjermingsregisterDeleteCommand(webClient,
identer.get(index), token.getTokenValue()).call())
.map(index -> new SkjermingsregisterPutCommand(webClient,
SkjermingDataRequest.builder()
.personident(identer.get(index))
.skjermetTil(LocalDateTime.now())
.build(),
token.getTokenValue()).call())
.flatMap(Flux::from))
.collectList();
}

@Timed(name = "providers", tags = {"operation", "skjermingsdata-oppdater"})
@Timed(name = "providers", tags = { "operation", "skjermingsdata-oppdater" })
public Mono<SkjermingDataResponse> oppdaterPerson(SkjermingDataRequest skjerming) {

return tokenService.exchange(serverProperties)
.flatMap(token -> new SkjermingsregisterGetCommand(webClient, skjerming.getPersonident(), token.getTokenValue()).call()
.flatMap(response -> {
if (isBlank(response.getError())) {
if (response.isEksistererIkke()) {
return new SkjermingsregisterPostCommand(webClient, List.of(skjerming),
return new SkjermingsregisterPostCommand(webClient, skjerming,
token.getTokenValue()).call()
.collectList()
.map(status -> {
log.info("Opprettet skjerming på ident {} fraDato {} tilDato {}",
status.get(0).getPersonident(), status.get(0).getSkjermetFra(), status.get(0).getSkjermetTil());
return status.get(0);
status.getFirst().getPersonident(), status.getFirst().getSkjermetFra(), status.getFirst().getSkjermetTil());
return status.getFirst();
});
} else {
return nonNull(skjerming.getSkjermetTil()) ?

new SkjermingsregisterPutCommand(webClient, skjerming.getPersonident(),
skjerming.getSkjermetTil(), token.getTokenValue()).call()
new SkjermingsregisterPutCommand(webClient, skjerming, token.getTokenValue())
.call()
.map(status -> {
log.info("Oppdatert skjerming for ident {}, ny tilDato {}", skjerming.getPersonident(), skjerming.getSkjermetTil());
return status;
}) :

Mono.just(new SkjermingDataResponse());
}
} else {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
@RequiredArgsConstructor
public class SkjermingsregisterGetCommand implements Callable<Mono<SkjermingDataResponse>> {

private static final String SKJERMINGSREGISTER_URL = "/api/v1/skjermingdata";
private static final String SKJERMINGSREGISTER_URL = "/api/v1/skjerming/dolly";
private static final String PERSONIDENT_HEADER = "personident";

private final WebClient webClient;
private final String ident;
Expand All @@ -26,9 +27,9 @@ public class SkjermingsregisterGetCommand implements Callable<Mono<SkjermingData
public Mono<SkjermingDataResponse> call() {
return webClient.get().uri(uriBuilder -> uriBuilder
.path(SKJERMINGSREGISTER_URL)
.pathSegment(ident)
.build())
.header(AUTHORIZATION, "Bearer " + token)
.header(PERSONIDENT_HEADER, ident)
.retrieve()
.bodyToMono(SkjermingDataResponse.class)
.onErrorResume(WebClientResponseException.NotFound.class::isInstance,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,17 @@
import reactor.util.retry.Retry;

import java.time.Duration;
import java.util.List;
import java.util.concurrent.Callable;

import static org.springframework.http.HttpHeaders.AUTHORIZATION;

@RequiredArgsConstructor
public class SkjermingsregisterPostCommand implements Callable<Flux<SkjermingDataResponse>> {

private static final String SKJERMINGSREGISTER_URL = "/api/v1/skjermingdata";
private static final String SKJERMINGSREGISTER_URL = "/api/v1/skjerming/dolly";

private final WebClient webClient;
private final List<SkjermingDataRequest> skjermingsDataRequest;
private final SkjermingDataRequest skjermingDataRequest;
private final String token;

@Override
Expand All @@ -30,7 +29,7 @@ public Flux<SkjermingDataResponse> call() {
.path(SKJERMINGSREGISTER_URL)
.build())
.header(AUTHORIZATION, "Bearer " + token)
.bodyValue(skjermingsDataRequest)
.bodyValue(skjermingDataRequest)
.retrieve()
.bodyToFlux(SkjermingDataResponse.class)
.onErrorResume(error -> Flux.just(SkjermingDataResponse.builder()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,39 +1,34 @@
package no.nav.dolly.bestilling.skjermingsregister.command;

import lombok.RequiredArgsConstructor;
import no.nav.dolly.bestilling.skjermingsregister.domain.SkjermingDataRequest;
import no.nav.dolly.bestilling.skjermingsregister.domain.SkjermingDataResponse;
import no.nav.testnav.libs.reactivecore.utils.WebClientFilter;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
import reactor.util.retry.Retry;

import java.time.Duration;
import java.time.LocalDateTime;
import java.util.concurrent.Callable;

import static java.util.Objects.nonNull;
import static org.springframework.http.HttpHeaders.AUTHORIZATION;

@RequiredArgsConstructor
public class SkjermingsregisterPutCommand implements Callable<Mono<SkjermingDataResponse>> {

private static final String SKJERMINGSREGISTER_URL = "/api/v1/skjermingdata";
private static final String SKJERMINGOPPHOER_URL = SKJERMINGSREGISTER_URL + "/opphor";
private static final String SKJERMING_TOM = "skjermetTil";
private static final String SKJERMINGSREGISTER_URL = "/api/v1/skjerming/dolly";

private final WebClient webClient;
private final String ident;
private final LocalDateTime tilDato;
private final SkjermingDataRequest skjermingsDataRequest;
private final String token;

@Override
public Mono<SkjermingDataResponse> call() {
return webClient.put().uri(uriBuilder -> uriBuilder
.path(SKJERMINGOPPHOER_URL)
.pathSegment(ident)
.queryParam(SKJERMING_TOM, nonNull(tilDato) ? tilDato.toLocalDate() : null)
.path(SKJERMINGSREGISTER_URL)
.build())
.header(AUTHORIZATION, "Bearer " + token)
.bodyValue(skjermingsDataRequest)
.retrieve()
.toBodilessEntity()
.map(result -> SkjermingDataResponse.builder().build())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import Request from '@/service/services/Request'

const skjermingUrl = '/testnav-skjermingsregister-proxy/api/v1/skjermingdata'
const skjermingUrl = '/testnav-skjermingsregister-proxy/api/v1/skjerming/dolly'

export default {
deleteSkjerming(ident: string) {
return Request.delete(`${skjermingUrl}/${ident}`)
return Request.put(skjermingUrl, { personident: ident, skjermetTil: new Date() })
},

getSkjerming(ident: string) {
return Request.get(`${skjermingUrl}/${ident}`)
}
return Request.get(skjermingUrl, { personident: ident })
},
}
11 changes: 5 additions & 6 deletions proxies/skjermingsregister-proxy/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -44,24 +44,23 @@ dependencyManagement {
}

repositories {
mavenCentral()
mavenCentral()
mavenLocal()
}

dependencies {
implementation 'no.nav.testnav.libs:data-transfer-objects'

implementation 'no.nav.testnav.libs:security-core'
implementation 'no.nav.testnav.libs:reactive-core'
implementation 'no.nav.testnav.libs:reactive-proxy'
implementation 'no.nav.testnav.libs:reactive-security'
implementation 'no.nav.testnav.libs:security-core'
implementation 'no.nav.testnav.libs:security-token-service'
implementation 'no.nav.testnav.libs:data-transfer-objects'

implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap' // TODO remove legacy bootstrap config
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'

implementation 'org.springframework.cloud:spring-cloud-starter-vault-config'
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'

implementation 'net.logstash.logback:logstash-logback-encoder:7.4'
implementation 'org.hibernate.validator:hibernate-validator'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ spring:
jwk-set-uri: ${TOKEN_X_JWKS_URI}
accepted-audience: ${TOKEN_X_CLIENT_ID}
cloud:
vault:
enabled: false
gateway:
httpclient:
response-timeout: 30s
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
TOKEN_X_ISSUER: dummy
proxy.url: http://localhost
STS_TOKEN_PROVIDER_USERNAME: dummy
STS_TOKEN_PROVIDER_PASSWORD: dummy
STS_TOKEN_PROVIDER_PASSWORD: dummy
spring:
cloud:
vault:
token: dummy

0 comments on commit b24059d

Please sign in to comment.