private void handleTrackingEvent()

in services/tracking-service/reactive-vertx/src/main/java/com/amazon/verticles/HttpVerticle.java [101:138]


    private void handleTrackingEvent(final RoutingContext routingContext) {

        String userAgent = routingContext.request().getHeader("User-Agent");
        String eventID = routingContext.request().getParam("eventID");

        UUID uuid = UUID.randomUUID();
        TrackingMessage trackingMessage = new TrackingMessage();
        trackingMessage.setMessageId(uuid.toString());
        trackingMessage.setProgramId(eventID);

        JsonObject message = JsonObject.mapFrom(trackingMessage);

        if (null == eventID) {
            routingContext.fail(400);
            return;
        }
        eb
                .<JsonObject>request(Constants.CACHE_EVENTBUS_ADDRESS, message)
                .onSuccess(res -> {
                    JsonObject result = res.body();
                    if (result.isEmpty()) {
                        sendResponse(routingContext, 404, Json.encode("ProgramId not found"));
                        return;
                    }

                    TrackingMessage tmpMsg = Json.decodeValue(result.encode(), TrackingMessage.class);
                    tmpMsg.setUserAgent(userAgent);

                    String enrichedData = Json.encode(tmpMsg);

                    eb.send(Constants.KINESIS_EVENTBUS_ADDRESS, enrichedData);
                    sendResponse(routingContext, 200, enrichedData);
                })
                .onFailure(err -> {
                    LOGGER.severe(err.getMessage());
                    routingContext.fail(err);
                });
    }