private Future<EventBusMessage> processAddRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final CredentialsObject payload = Optional.ofNullable(request.getJsonPayload()) .map(json -> json.mapTo(CredentialsObject.class)).orElse(null); if (tenantId == null) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, "missing tenant ID")); } else if (payload == null) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, "missing payload")); } else { return hashPlainPasswords(payload).compose(credentials -> doAdd(request, tenantId, credentials)); } }
private Future<EventBusMessage> processUpdateRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final CredentialsObject payload = Optional.ofNullable(request.getJsonPayload()) .map(json -> json.mapTo(CredentialsObject.class)).orElse(null); if (tenantId == null) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, "missing tenant ID")); } else if (payload == null) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, "missing payload")); } else { return hashPlainPasswords(payload).compose(credentials -> doUpdate(request, tenantId, credentials)); } }
Future<EventBusMessage> processGetRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final JsonObject payload = request.getJsonPayload(); if (tenantId == null && payload == null) { log.debug("request does not contain any query parameters"); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else if (tenantId != null) { // deprecated API log.debug("retrieving tenant [{}] using deprecated variant of get tenant request", tenantId); return processGetByIdRequest(request, tenantId); } else { final String tenantIdFromPayload = getTypesafeValueForField(String.class, payload, TenantConstants.FIELD_PAYLOAD_TENANT_ID); final String subjectDn = getTypesafeValueForField(String.class, payload, TenantConstants.FIELD_PAYLOAD_SUBJECT_DN); if (tenantIdFromPayload == null && subjectDn == null) { log.debug("payload does not contain any query parameters"); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else if (tenantIdFromPayload != null) { log.debug("retrieving tenant [id: {}]", tenantIdFromPayload); return processGetByIdRequest(request, tenantIdFromPayload); } else { return processGetByCaRequest(request, subjectDn); } } }
Objects.requireNonNull(response); if (response.getTenant() == null || response.getJsonPayload() == null) { return Future.succeededFuture(response); } else {
Objects.requireNonNull(response); if (response.getTenant() == null || response.getJsonPayload() == null) { return Future.succeededFuture(response); } else {
private Future<EventBusMessage> processAddRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final CredentialsObject payload = Optional.ofNullable(request.getJsonPayload()) .map(json -> json.mapTo(CredentialsObject.class)).orElse(null); if (tenantId == null) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, "missing tenant ID")); } else if (payload == null) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, "missing payload")); } else { try { payload.checkValidity(this::checkSecret); final Future<CredentialsResult<JsonObject>> result = Future.future(); add(tenantId, JsonObject.mapFrom(payload), result.completer()); return result.map(res -> { return request.getResponse(res.getStatus()) .setDeviceId(payload.getDeviceId()) .setCacheDirective(res.getCacheDirective()); }); } catch (IllegalStateException e) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, e.getMessage())); } } }
private Future<EventBusMessage> processUpdateRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final CredentialsObject payload = Optional.ofNullable(request.getJsonPayload()) .map(json -> json.mapTo(CredentialsObject.class)).orElse(null); if (tenantId == null) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, "missing tenant ID")); } else if (payload == null) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, "missing payload")); } else { try { payload.checkValidity(this::checkSecret); final Future<CredentialsResult<JsonObject>> result = Future.future(); update(tenantId, JsonObject.mapFrom(payload), result.completer()); return result.map(res -> { return request.getResponse(res.getStatus()) .setDeviceId(payload.getDeviceId()) .setCacheDirective(res.getCacheDirective()); }); } catch (IllegalStateException e) { return Future.failedFuture(new ClientErrorException( HttpURLConnection.HTTP_BAD_REQUEST, e.getMessage())); } } }
private Future<EventBusMessage> processAddRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final JsonObject payload = getRequestPayload(request.getJsonPayload()); if (tenantId == null) { log.debug("request does not contain mandatory property [{}]", MessageHelper.APP_PROPERTY_TENANT_ID); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else if (isValidRequestPayload(payload)) { log.debug("creating tenant [{}]", tenantId); final Future<TenantResult<JsonObject>> addResult = Future.future(); addNotPresentFieldsWithDefaultValuesForTenant(payload); add(tenantId, payload, addResult.completer()); return addResult.map(tr -> { return request.getResponse(tr.getStatus()) .setJsonPayload(tr.getPayload()) .setCacheDirective(tr.getCacheDirective()); }); } else { log.debug("request contains malformed payload"); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } }
private Future<EventBusMessage> processUpdateRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final JsonObject payload = getRequestPayload(request.getJsonPayload()); if (tenantId == null) { log.debug("request does not contain mandatory property [{}]", MessageHelper.APP_PROPERTY_TENANT_ID); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else if (isValidRequestPayload(payload)) { log.debug("updating tenant [{}]", tenantId); final Future<TenantResult<JsonObject>> updateResult = Future.future(); addNotPresentFieldsWithDefaultValuesForTenant(payload); update(tenantId, payload, updateResult.completer()); return updateResult.map(tr -> { return request.getResponse(tr.getStatus()) .setJsonPayload(tr.getPayload()) .setCacheDirective(tr.getCacheDirective()); }); } else { log.debug("request contains malformed payload"); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } }
private Future<EventBusMessage> processUpdateRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final JsonObject payload = getRequestPayload(request.getJsonPayload()); if (tenantId == null) { log.debug("request does not contain mandatory property [{}]", MessageHelper.APP_PROPERTY_TENANT_ID); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else if (isValidRequestPayload(payload)) { log.debug("updating tenant [{}]", tenantId); final Future<TenantResult<JsonObject>> updateResult = Future.future(); addNotPresentFieldsWithDefaultValuesForTenant(payload); update(tenantId, payload, updateResult.completer()); return updateResult.map(tr -> { return request.getResponse(tr.getStatus()) .setJsonPayload(tr.getPayload()) .setCacheDirective(tr.getCacheDirective()); }); } else { log.debug("request contains malformed payload"); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } }
private Future<EventBusMessage> processAddRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final JsonObject payload = getRequestPayload(request.getJsonPayload()); if (tenantId == null) { log.debug("request does not contain mandatory property [{}]", MessageHelper.APP_PROPERTY_TENANT_ID); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else if (isValidRequestPayload(payload)) { log.debug("creating tenant [{}]", tenantId); final Future<TenantResult<JsonObject>> addResult = Future.future(); addNotPresentFieldsWithDefaultValuesForTenant(payload); add(tenantId, payload, addResult.completer()); return addResult.map(tr -> { return request.getResponse(tr.getStatus()) .setJsonPayload(tr.getPayload()) .setCacheDirective(tr.getCacheDirective()); }); } else { log.debug("request contains malformed payload"); return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } }
private Future<EventBusMessage> processUpdateRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final String deviceId = request.getDeviceId(); final JsonObject payload = getRequestPayload(request.getJsonPayload()); if (tenantId == null || deviceId == null) { return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else { log.debug("updating registration information for device [{}] of tenant [{}]", deviceId, tenantId); final Future<RegistrationResult> result = Future.future(); updateDevice(tenantId, deviceId, payload, result.completer()); return result.map(res -> { return request.getResponse(res.getStatus()) .setDeviceId(deviceId) .setCacheDirective(res.getCacheDirective()); }); } }
final JsonObject payload = request.getJsonPayload();
private Future<EventBusMessage> processUpdateRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final String deviceId = request.getDeviceId(); final JsonObject payload = getRequestPayload(request.getJsonPayload()); if (tenantId == null || deviceId == null) { return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else { log.debug("updating registration information for device [{}] of tenant [{}]", deviceId, tenantId); final Future<RegistrationResult> result = Future.future(); updateDevice(tenantId, deviceId, payload, result.completer()); return result.map(res -> { return request.getResponse(res.getStatus()) .setDeviceId(deviceId) .setCacheDirective(res.getCacheDirective()); }); } }
private Future<EventBusMessage> processRemoveRequest(final EventBusMessage request) { final JsonObject payload = request.getJsonPayload();
private Future<EventBusMessage> processRegisterRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final String deviceId = request.getDeviceId(); final JsonObject payload = getRequestPayload(request.getJsonPayload()); if (tenantId == null || deviceId == null) { return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else { log.debug("registering device [{}] for tenant [{}]", deviceId, tenantId); final Future<RegistrationResult> result = Future.future(); addDevice(tenantId, deviceId, payload, result.completer()); return result.map(res -> { return request.getResponse(res.getStatus()) .setDeviceId(deviceId) .setCacheDirective(res.getCacheDirective()); }); } }
private Future<EventBusMessage> processRegisterRequest(final EventBusMessage request) { final String tenantId = request.getTenant(); final String deviceId = request.getDeviceId(); final JsonObject payload = getRequestPayload(request.getJsonPayload()); if (tenantId == null || deviceId == null) { return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else { log.debug("registering device [{}] for tenant [{}]", deviceId, tenantId); final Future<RegistrationResult> result = Future.future(); addDevice(tenantId, deviceId, payload, result.completer()); return result.map(res -> { return request.getResponse(res.getStatus()) .setDeviceId(deviceId) .setCacheDirective(res.getCacheDirective()); }); } }
/** * Verifies that the base service routes a deprecated request for retrieving * a tenant by its identifier to the corresponding <em>get</em> method. * * @param ctx The vert.x test context. */ @Test public void testDeprecatedGetByIdSucceeds(final TestContext ctx) { final EventBusMessage request = EventBusMessage.forOperation(TenantConstants.TenantAction.get.toString()) .setJsonPayload(new JsonObject().put(TenantConstants.FIELD_PAYLOAD_TENANT_ID, "my-tenant")); tenantService.processRequest(request).setHandler(ctx.asyncAssertSuccess(response -> { ctx.assertEquals(HttpURLConnection.HTTP_OK, response.getStatus()); ctx.assertEquals("getById", response.getJsonPayload().getString("operation")); })); }
/** * Verifies that the base service routes a request for retrieving * a tenant by its trusted certificate authority to the corresponding * <em>get</em> method. * * @param ctx The vert.x test context. */ @Test public void testGetByCaSucceeds(final TestContext ctx) { final EventBusMessage request = EventBusMessage.forOperation(TenantConstants.TenantAction.get.toString()) .setJsonPayload(new JsonObject().put(TenantConstants.FIELD_PAYLOAD_SUBJECT_DN, "CN=test")); tenantService.processRequest(request).setHandler(ctx.asyncAssertSuccess(response -> { ctx.assertEquals(HttpURLConnection.HTTP_OK, response.getStatus()); ctx.assertEquals("getByCa", response.getJsonPayload().getString("operation")); })); }
/** * Verifies that the base service routes a request for retrieving * a tenant by its identifier to the corresponding <em>get</em> method. * * @param ctx The vert.x test context. */ @Test public void testGetByIdSucceeds(final TestContext ctx) { final EventBusMessage request = createRequest(TenantConstants.TenantAction.get, null); tenantService.processRequest(request).setHandler(ctx.asyncAssertSuccess(response -> { ctx.assertEquals(HttpURLConnection.HTTP_OK, response.getStatus()); ctx.assertEquals(TEST_TENANT, response.getJsonPayload().getString(TenantConstants.FIELD_PAYLOAD_TENANT_ID)); })); }