Skip to content

Commit 91822db

Browse files
caroline-ttdcYKatherine
authored andcommitted
Update snapshot consuming after migrating to maven central portal (#1801)
1 parent 070f089 commit 91822db

File tree

3 files changed

+75
-12
lines changed

3 files changed

+75
-12
lines changed

src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ private void setUpEncryptedRoutes(Router mainRouter, BodyHandler bodyHandler) {
306306
mainRouter.post(V2_IDENTITY_BUCKETS.toString()).handler(bodyHandler).handler(auth.handleV1(
307307
rc -> encryptedPayloadHandler.handle(rc, this::handleBucketsV2), Role.MAPPER));
308308
mainRouter.post(V2_IDENTITY_MAP.toString()).handler(bodyHandler).handler(auth.handleV1(
309-
rc -> encryptedPayloadHandler.handle(rc, this::handleIdentityMapV2), Role.MAPPER));
309+
rc -> encryptedPayloadHandler.handleIdentityMap(rc, this::handleIdentityMapV2), Role.MAPPER));
310310
mainRouter.post(V2_KEY_LATEST.toString()).handler(bodyHandler).handler(auth.handleV1(
311311
rc -> encryptedPayloadHandler.handle(rc, this::handleKeysRequestV2), Role.ID_READER));
312312
mainRouter.post(V2_KEY_SHARING.toString()).handler(bodyHandler).handler(auth.handleV1(
@@ -1663,7 +1663,8 @@ private boolean validateServiceLink(RoutingContext rc) {
16631663
return false;
16641664
}
16651665

1666-
private void handleIdentityMapV2(RoutingContext rc) {
1666+
private Future<Void> handleIdentityMapV2(RoutingContext rc) {
1667+
final Promise<Void> promise = Promise.promise();
16671668
try {
16681669
final Integer siteId = RoutingContextUtil.getSiteId(rc);
16691670
final String apiContact = RoutingContextUtil.getApiContact(rc, clientKeyProvider);
@@ -1672,16 +1673,39 @@ private void handleIdentityMapV2(RoutingContext rc) {
16721673
final InputUtil.InputVal[] inputList = getIdentityMapV2Input(rc);
16731674
if (inputList == null) {
16741675
ResponseUtil.LogInfoAndSend400Response(rc, this.phoneSupport ? ERROR_INVALID_INPUT_WITH_PHONE_SUPPORT : ERROR_INVALID_INPUT_EMAIL_MISSING);
1675-
return;
1676+
promise.complete();
1677+
return promise.future();
16761678
}
16771679

1678-
if (!validateServiceLink(rc)) { return; }
1680+
if (!validateServiceLink(rc)) {
1681+
promise.complete();
1682+
return promise.future();
1683+
}
16791684

1680-
final JsonObject resp = handleIdentityMapCommon(rc, inputList);
1681-
ResponseUtil.SuccessV2(rc, resp);
1685+
vertx.executeBlocking(
1686+
blockingPromise -> {
1687+
try {
1688+
final JsonObject resp = handleIdentityMapCommon(rc, inputList);
1689+
blockingPromise.complete(resp);
1690+
} catch (Exception e) {
1691+
blockingPromise.fail(e);
1692+
}},
1693+
false,
1694+
resp -> {
1695+
if (resp.succeeded()) {
1696+
if (!rc.response().ended()) {
1697+
ResponseUtil.SuccessV2(rc, resp.result());
1698+
}
1699+
} else {
1700+
ResponseUtil.LogErrorAndSendResponse(ResponseStatus.UnknownError, 500, rc, "Unknown error while mapping identity v2", (Exception) resp.cause());
1701+
}
1702+
promise.complete();
1703+
});
16821704
} catch (Exception e) {
16831705
ResponseUtil.LogErrorAndSendResponse(ResponseStatus.UnknownError, 500, rc, "Unknown error while mapping identity v2", e);
1706+
promise.fail(e);
16841707
}
1708+
return promise.future();
16851709
}
16861710

16871711
private InputUtil.InputVal[] getIdentityMapV2Input(RoutingContext rc) {

src/main/java/com/uid2/operator/vertx/V2PayloadHandler.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,44 @@ public V2PayloadHandler(KeyManager keyManager, Boolean enableEncryption, Identit
4343
this.siteProvider = siteProvider;
4444
}
4545

46+
public void handleIdentityMap(RoutingContext rc, Function<RoutingContext, Future<Void>> apiHandler) {
47+
if (!enableEncryption) {
48+
passThroughIdentityMap(rc, apiHandler);
49+
return;
50+
}
51+
52+
V2RequestUtil.V2Request request = V2RequestUtil.parseRequest(rc.body().asString(), AuthMiddleware.getAuthClient(ClientKey.class, rc), new InstantClock());
53+
if (!request.isValid()) {
54+
ResponseUtil.LogInfoAndSend400Response(rc, request.errorMessage);
55+
return;
56+
}
57+
rc.data().put("request", request.payload);
58+
59+
Future<Void> apiHandlerFuture = apiHandler.apply(rc);
60+
61+
apiHandlerFuture.onComplete(ar -> {
62+
if (!rc.response().ended()) {
63+
handleResponse(rc, request);
64+
}
65+
});
66+
}
67+
68+
private void passThroughIdentityMap(RoutingContext rc, Function<RoutingContext, Future<Void>> apiHandler) {
69+
rc.data().put("request", rc.body().asJsonObject());
70+
Future<Void> apiHandlerFuture = apiHandler.apply(rc);
71+
72+
apiHandlerFuture.onComplete(ar -> {
73+
if (ar.succeeded() && !rc.response().ended()) {
74+
if (rc.response().getStatusCode() != 200) {
75+
return;
76+
}
77+
JsonObject respJson = (JsonObject) rc.data().get("response");
78+
rc.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json")
79+
.end(respJson.encode());
80+
}
81+
});
82+
}
83+
4684
public void handle(RoutingContext rc, Handler<RoutingContext> apiHandler) {
4785
if (!enableEncryption) {
4886
passThrough(rc, apiHandler);

src/test/java/com/uid2/operator/UIDOperatorVerticleTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@
3333
import com.uid2.shared.store.salt.ISaltProvider;
3434
import io.micrometer.core.instrument.Metrics;
3535
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
36-
import io.vertx.core.AsyncResult;
37-
import io.vertx.core.Future;
38-
import io.vertx.core.Handler;
39-
import io.vertx.core.Vertx;
36+
import io.vertx.core.*;
4037
import io.vertx.core.buffer.Buffer;
4138
import io.vertx.core.json.JsonArray;
4239
import io.vertx.core.json.JsonObject;
@@ -2346,8 +2343,12 @@ void identityMapBatchBothEmailAndHashEmpty(String apiVersion, Vertx vertx, Vertx
23462343
req.put("email_hash", emailHashes);
23472344

23482345
send(apiVersion, vertx, apiVersion + "/identity/map", false, null, req, 200, respJson -> {
2349-
checkIdentityMapResponse(respJson);
2350-
testContext.completeNow();
2346+
try {
2347+
checkIdentityMapResponse(respJson);
2348+
testContext.completeNow();
2349+
} catch (Throwable ex) {
2350+
testContext.failNow(ex);
2351+
}
23512352
});
23522353
}
23532354

0 commit comments

Comments
 (0)