Example usage for io.vertx.core.json JsonObject getString

List of usage examples for io.vertx.core.json JsonObject getString

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject getString.

Prototype

public String getString(String key) 

Source Link

Document

Get the string value with the specified key, special cases are addressed for extended JSON types Instant , byte[] and Enum which can be converted to String.

Usage

From source file:org.eclipse.hono.service.auth.impl.FileBasedAuthenticationService.java

License:Open Source License

@Override
public void verifyPlain(final String authzid, final String username, final String password,
        Handler<AsyncResult<HonoUser>> authenticationResultHandler) {

    if (username == null || username.isEmpty()) {
        authenticationResultHandler.handle(Future.failedFuture("missing username"));
    } else if (password == null || password.isEmpty()) {
        authenticationResultHandler.handle(Future.failedFuture("missing password"));
    } else {//from  ww w . ja  v  a 2  s .c  o  m
        JsonObject user = getUser(username, AuthenticationConstants.MECHANISM_PLAIN);
        if (user == null) {
            log.debug("no such user [{}]", username);
            authenticationResultHandler.handle(Future.failedFuture("unauthorized"));
        } else if (password.equals(user.getString("password"))) {
            verify(username, user, authzid, authenticationResultHandler);
        } else {
            log.debug("password mismatch");
            authenticationResultHandler.handle(Future.failedFuture("unauthorized"));
        }
    }
}

From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java

License:Open Source License

/**
 * Processes a credentials request message received via the Vertx event bus.
 * /*w w  w .j av  a2 s  . co m*/
 * @param regMsg The message.
 */
public final void processCredentialsMessage(final Message<JsonObject> regMsg) {

    final JsonObject body = regMsg.body();
    if (body == null) {
        log.debug("credentials request did not contain body - not supported");
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
        return;
    }

    final String tenantId = body.getString(RequestResponseApiConstants.FIELD_TENANT_ID);
    final String subject = body.getString(MessageHelper.SYS_PROPERTY_SUBJECT);
    final JsonObject payload = getRequestPayload(body);

    if (tenantId == null) {
        log.debug("credentials request did not contain tenantId - not supported");
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
        return;
    } else if (subject == null) {
        log.debug("credentials request did not contain subject - not supported");
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
        return;
    } else if (payload == null) {
        log.debug(
                "credentials request contained invalid or no payload at all (expected json format) - not supported");
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
        return;
    }

    switch (subject) {
    case OPERATION_GET:
        processCredentialsMessageGetOperation(regMsg, tenantId, payload);
        break;
    case OPERATION_ADD:
        processCredentialsMessageAddOperation(regMsg, tenantId, payload);
        break;
    case OPERATION_UPDATE:
        processCredentialsMessageUpdateOperation(regMsg, tenantId, payload);
        break;
    case OPERATION_REMOVE:
        processCredentialsMessageRemoveOperation(regMsg, tenantId, payload);
        break;
    default:
        log.debug("operation [{}] not supported", subject);
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
    }
}

From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java

License:Open Source License

private void processCredentialsMessageGetOperation(final Message<JsonObject> regMsg, final String tenantId,
        final JsonObject payload) {
    final String type = payload.getString(FIELD_TYPE);
    if (type == null) {
        log.debug("credentials get request did not contain type in payload - not supported");
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
        return;//from  ww w. jav a2  s  .  com
    }

    final String authId = payload.getString(FIELD_AUTH_ID);
    if (authId == null) {
        log.debug("credentials get request did not contain authId in payload - not supported");
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
        return;
    }
    log.debug("getting credentials [{}:{}] of tenant [{}]", type, authId, tenantId);
    getCredentials(tenantId, type, authId, result -> reply(regMsg, result));
}

From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java

License:Open Source License

private void processCredentialsMessageRemoveOperation(final Message<JsonObject> regMsg, final String tenantId,
        final JsonObject payload) {
    final String deviceId = payload.getString(FIELD_DEVICE_ID);
    if (deviceId == null) {
        log.debug("credentials remove request did not contain device-id in payload - not supported");
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
        return;//from   w  w  w.  j a  v  a2s . c o m
    }

    final String type = payload.getString(FIELD_TYPE);
    if (type == null) {
        log.debug("credentials remove request did not contain type in payload - not supported");
        reply(regMsg, CredentialsResult.from(HTTP_BAD_REQUEST, (JsonObject) null));
        return;
    }

    final String authId = payload.getString(FIELD_AUTH_ID);

    removeCredentials(tenantId, deviceId, type, authId, result -> reply(regMsg, result));
}

From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java

License:Open Source License

/**
 * Sends a response to a credentials request over the Vertx event bus.
 * /*ww  w .j a  v a  2  s .com*/
 * @param request The message to respond to.
 * @param result The credentials result that should be conveyed in the response.
 */
protected final void reply(final Message<JsonObject> request, final CredentialsResult<JsonObject> result) {

    final JsonObject body = request.body();
    final String tenantId = body.getString(RequestResponseApiConstants.FIELD_TENANT_ID);
    final String deviceId = body.getString(RequestResponseApiConstants.FIELD_DEVICE_ID);

    request.reply(CredentialsConstants.getServiceReplyAsJson(tenantId, deviceId, result));
}

From source file:org.eclipse.hono.service.credentials.CredentialsHttpEndpoint.java

License:Open Source License

private void addCredentials(final RoutingContext ctx) {

    final JsonObject payload = (JsonObject) ctx.get(KEY_REQUEST_BODY);
    final String deviceId = payload.getString(CredentialsConstants.FIELD_PAYLOAD_DEVICE_ID);
    final String authId = payload.getString(CredentialsConstants.FIELD_AUTH_ID);
    final String type = payload.getString(CredentialsConstants.FIELD_TYPE);
    final String tenantId = getTenantParam(ctx);
    logger.debug("adding credentials [tenant: {}, device-id: {}, auth-id: {}, type: {}]", tenantId, deviceId,
            authId, type);//  ww w.  j ava  2  s  .  c om

    final JsonObject requestMsg = EventBusMessage
            .forOperation(CredentialsConstants.CredentialsAction.add.toString()).setTenant(tenantId)
            .setDeviceId(deviceId).setJsonPayload(payload).toJson();

    sendAction(ctx, requestMsg,
            getDefaultResponseHandler(ctx, status -> status == HttpURLConnection.HTTP_CREATED,
                    httpServerResponse -> httpServerResponse.putHeader(HttpHeaders.LOCATION,
                            String.format("/%s/%s/%s/%s", CredentialsConstants.CREDENTIALS_ENDPOINT, tenantId,
                                    authId, type))));
}

From source file:org.eclipse.hono.service.credentials.CredentialsHttpEndpoint.java

License:Open Source License

private void updateCredentials(final RoutingContext ctx) {

    final JsonObject payload = (JsonObject) ctx.get(KEY_REQUEST_BODY);
    final String deviceId = payload.getString(CredentialsConstants.FIELD_PAYLOAD_DEVICE_ID);
    final String authId = payload.getString(CredentialsConstants.FIELD_AUTH_ID);
    final String type = payload.getString(CredentialsConstants.FIELD_TYPE);
    final String tenantId = getTenantParam(ctx);
    final String authIdFromUri = getAuthIdParam(ctx);
    final String typeFromUri = getTypeParam(ctx);

    // auth-id and type from URI must match payload
    if (!authIdFromUri.equals(authId)) {
        ctx.response().setStatusMessage("Non-matching authentication identifier");
        ctx.fail(HttpURLConnection.HTTP_BAD_REQUEST);
    } else if (!typeFromUri.equals(type)) {
        ctx.response().setStatusMessage("Non-matching credentials type");
        ctx.fail(HttpURLConnection.HTTP_BAD_REQUEST);
    } else {/*from   w  w w  .  ja v  a  2  s .  c o m*/
        logger.debug("updating credentials [tenant: {}, device-id: {}, auth-id: {}, type: {}]", tenantId,
                deviceId, authId, type);

        final JsonObject requestMsg = EventBusMessage
                .forOperation(CredentialsConstants.CredentialsAction.update.toString()).setTenant(tenantId)
                .setDeviceId(deviceId).setJsonPayload(payload).toJson();

        sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx));
    }
}

From source file:org.eclipse.hono.service.credentials.impl.FileBasedCredentialsService.java

License:Open Source License

protected void loadCredentialsData() {
    if (filename != null) {
        final FileSystem fs = vertx.fileSystem();
        log.debug("trying to load credentials information from file {}", filename);
        if (fs.existsBlocking(filename)) {
            final AtomicInteger credentialsCount = new AtomicInteger();
            fs.readFile(filename, readAttempt -> {
                if (readAttempt.succeeded()) {
                    JsonArray allObjects = new JsonArray(new String(readAttempt.result().getBytes()));
                    for (Object obj : allObjects) {
                        JsonObject tenant = (JsonObject) obj;
                        String tenantId = tenant.getString(FIELD_TENANT);
                        Map<String, JsonArray> credentialsMap = new HashMap<>();
                        for (Object credentialsObj : tenant.getJsonArray(ARRAY_CREDENTIALS)) {
                            JsonObject credentials = (JsonObject) credentialsObj;
                            JsonArray authIdCredentials;
                            if (credentialsMap.containsKey(credentials.getString(FIELD_AUTH_ID))) {
                                authIdCredentials = credentialsMap.get(credentials.getString(FIELD_AUTH_ID));
                            } else {
                                authIdCredentials = new JsonArray();
                            }//from w w  w.  ja  v a2s. c o  m
                            authIdCredentials.add(credentials);
                            credentialsMap.put(credentials.getString(FIELD_AUTH_ID), authIdCredentials);
                            credentialsCount.incrementAndGet();
                        }
                        credentials.put(tenantId, credentialsMap);
                    }
                    log.info("successfully loaded {} credentials from file [{}]", credentialsCount.get(),
                            filename);
                } else {
                    log.warn("could not load credentials from file [{}]", filename, readAttempt.cause());
                }
            });
        } else {
            log.debug("credentials file {} does not exist (yet)", filename);
        }
    }
}

From source file:org.eclipse.hono.service.credentials.impl.FileBasedCredentialsService.java

License:Open Source License

protected CredentialsResult getCredentialsResult(final String tenantId, final String authId,
        final String type) {
    JsonObject data = getCredentials(tenantId, authId, type);
    if (data != null) {
        JsonObject resultPayload = getResultPayload(data.getString(FIELD_DEVICE_ID), data.getString(FIELD_TYPE),
                data.getString(FIELD_AUTH_ID), data.getBoolean(FIELD_ENABLED),
                data.getJsonArray(FIELD_SECRETS));
        return CredentialsResult.from(HTTP_OK, resultPayload);
    } else {//  w  w w  . ja v a 2s.  c  om
        return CredentialsResult.from(HTTP_NOT_FOUND);
    }
}

From source file:org.eclipse.hono.service.credentials.impl.FileBasedCredentialsService.java

License:Open Source License

private JsonObject getCredentials(final String tenantId, final String authId, final String type) {
    Objects.nonNull(tenantId);/*w  w w .  j a  va 2s.  c om*/
    Objects.nonNull(authId);
    Objects.nonNull(type);

    final Map<String, JsonArray> credentialsForTenant = credentials.get(tenantId);
    if (credentialsForTenant != null) {
        JsonArray authIdCredentials = credentialsForTenant.get(authId);
        if (authIdCredentials == null) {
            return null;
        }

        for (Object authIdCredentialEntry : authIdCredentials) {
            JsonObject authIdCredential = (JsonObject) authIdCredentialEntry;
            // return the first matching type entry for this authId
            if (type.equals(authIdCredential.getString(FIELD_TYPE))) {
                return authIdCredential;
            }
        }
    }
    return null;
}