Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Støtte for skjermetBulk og markering av onprem-ting #1296

Merged
merged 2 commits into from
Jun 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import no.nav.vedtak.felles.integrasjon.rest.RestRequest;

// Extend og annoter med endpoint + default, evt tokenConfig for å illustrere
//@RestClientConfig(tokenConfig = TokenFlow.STS_CC, endpointProperty = "arbeidsfordeling.rs.url", endpointDefault = "https://app.adeo.no/norg2/api/v1/arbeidsfordeling/enheter")
//@RestClientConfig(tokenConfig = TokenFlow.NO_AUTH_NEEDED, endpointProperty = "arbeidsfordeling.rs.url", endpointDefault = "https://app.adeo.no/norg2/api/v1/arbeidsfordeling/enheter")
public abstract class AbstractArbeidsfordelingKlient implements Arbeidsfordeling {

private static final String BEST_MATCH = "/bestmatch";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package no.nav.vedtak.felles.integrasjon.skjerming;

import java.time.Duration;
import java.net.URI;
import java.util.List;
import java.util.Map;

import javax.ws.rs.core.UriBuilder;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -18,8 +22,13 @@ public abstract class AbstractSkjermetPersonGCPKlient implements Skjerming {
private static final Logger LOG = LoggerFactory.getLogger(AbstractSkjermetPersonGCPKlient.class);
private static final boolean TESTENV = Environment.current().isLocal();

private static final String SKJERMET_PATH = "skjermet";
private static final String BULK_PATH = "skjermetBulk";

private final RestClient client;
private final RestConfig restConfig;
private final URI bulkEndpoint;
private final URI skjermetEndpoint;

protected AbstractSkjermetPersonGCPKlient() {
this(RestClient.client());
Expand All @@ -28,6 +37,8 @@ protected AbstractSkjermetPersonGCPKlient() {
protected AbstractSkjermetPersonGCPKlient(RestClient restClient) {
this.client = restClient;
this.restConfig = RestConfig.forClient(this.getClass());
this.skjermetEndpoint = UriBuilder.fromUri(restConfig.endpoint()).path(SKJERMET_PATH).build();
this.bulkEndpoint = UriBuilder.fromUri(restConfig.endpoint()).path(BULK_PATH).build();
if (!restConfig.tokenConfig().isAzureAD()) {
throw new IllegalArgumentException("Utviklerfeil: klient må annoteres med Azure CC");
}
Expand All @@ -40,7 +51,7 @@ public boolean erSkjermet(String fnr) {
return false;
}

var request = RestRequest.newPOSTJson(new SkjermetRequestDto(fnr), restConfig.endpoint(), restConfig).timeout(Duration.ofSeconds(30));
var request = RestRequest.newPOSTJson(new SkjermetRequestDto(fnr), skjermetEndpoint, restConfig);

try {
return kallMedSjekk(request);
Expand All @@ -55,7 +66,31 @@ private boolean kallMedSjekk(RestRequest request) {
return "true".equalsIgnoreCase(skjermet);
}

private record SkjermetRequestDto(String personident) {
@Override
public boolean erNoenSkjermet(List<String> fnr) {
if (TESTENV || fnr == null || fnr.isEmpty()) {
return false;
}

var request = RestRequest.newPOSTJson(new SkjermetBulkRequestDto(fnr), bulkEndpoint, restConfig);

try {
return kallBulkMedSjekk(request);
} catch (Exception e) {
LOG.info("SkjermetPerson fikk feil", e);
}
return kallBulkMedSjekk(request);
}

@SuppressWarnings("unchecked")
private boolean kallBulkMedSjekk(RestRequest request) {
// Se github / skjerming / PipController
Map<String, Boolean> skjermet = client.send(request, Map.class);
return skjermet.values().stream().anyMatch(v -> v);
}

private record SkjermetRequestDto(String personident) { }

private record SkjermetBulkRequestDto(List<String> personidenter) { }

}
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
package no.nav.vedtak.felles.integrasjon.skjerming;

import java.net.URI;
import java.util.List;
import java.util.Map;

import javax.ws.rs.core.UriBuilder;

import no.nav.foreldrepenger.konfig.Environment;
import no.nav.vedtak.felles.integrasjon.rest.RestClient;
import no.nav.vedtak.felles.integrasjon.rest.RestConfig;
import no.nav.vedtak.felles.integrasjon.rest.RestRequest;

// OBS på propertynavn vs GCP-versjon skjermet.person.onprem.rs.url=http://skjermede-personer-pip.nom/skjermet
// Extend og annoter med endpoint+default + tokenConfig = STS_CC
//@RestClientConfig(tokenConfig = TokenFlow.STS_CC, endpointProperty = "skjermet.person.onprem.rs.url", endpointDefault = "http://skjermede-personer-pip.nom/skjermet"
//@RestClientConfig(tokenConfig = TokenFlow.NO_AUTH_NEEDED, endpointProperty = "skjermet.person.onprem.rs.url", endpointDefault = "http://skjermede-personer-pip.nom/skjermet"
public abstract class AbstractSkjermetPersonOnPremKlient implements Skjerming {

private static final boolean TESTENV = Environment.current().isLocal();

private static final String SKJERMET_PATH = "skjermet";
private static final String BULK_PATH = "skjermetBulk";

private final RestClient client;
private final RestConfig restConfig;
private final URI bulkEndpoint;
private final URI skjermetEndpoint;

protected AbstractSkjermetPersonOnPremKlient() {
this(RestClient.client());
Expand All @@ -22,6 +33,8 @@ protected AbstractSkjermetPersonOnPremKlient() {
protected AbstractSkjermetPersonOnPremKlient(RestClient restClient) {
this.client = restClient;
this.restConfig = RestConfig.forClient(this.getClass());
this.skjermetEndpoint = UriBuilder.fromUri(restConfig.endpoint()).path(SKJERMET_PATH).build();
this.bulkEndpoint = UriBuilder.fromUri(restConfig.endpoint()).path(BULK_PATH).build();
}


Expand All @@ -31,18 +44,32 @@ public boolean erSkjermet(String fnr) {
return false;
}

var request = RestRequest.newPOSTJson(new SkjermetRequestDto(fnr), restConfig.endpoint(), restConfig);
var request = RestRequest.newPOSTJson(new SkjermetRequestDto(fnr), skjermetEndpoint, restConfig);

var skjermet = client.send(request, String.class);
return "true".equalsIgnoreCase(skjermet);
}

private boolean kallMedSjekk(RestRequest request) {
var skjermet = client.send(request, String.class);
return "true".equalsIgnoreCase(skjermet);
@Override
public boolean erNoenSkjermet(List<String> fnr) {
if (TESTENV || fnr == null || fnr.isEmpty()) {
return false;
}

var request = RestRequest.newPOSTJson(new SkjermetBulkRequestDto(fnr), bulkEndpoint, restConfig);

return kallBulkMedSjekk(request);
}

private record SkjermetRequestDto(String personident) {
@SuppressWarnings("unchecked")
private boolean kallBulkMedSjekk(RestRequest request) {
// Se github / skjerming / PipController
Map<String, Boolean> skjermet = client.send(request, Map.class);
return skjermet.values().stream().anyMatch(v -> v);
}

private record SkjermetRequestDto(String personident) { }

private record SkjermetBulkRequestDto(List<String> personidenter) { }

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package no.nav.vedtak.felles.integrasjon.skjerming;

import java.util.List;

public interface Skjerming {

boolean erSkjermet(String fnr);

boolean erNoenSkjermet(List<String> fnr);

}