Search in sources :

Example 31 with JsonObject

use of com.bluenimble.platform.json.JsonObject in project serverless by bluenimble.

the class DownloadRootKeysSpi method execute.

@Override
public ApiOutput execute(Api api, final ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
    String paraphrase = (String) request.get(Spec.Paraphrase);
    try {
        KeyPair kp = api.space().getRootKeys();
        JsonObject oKeys = new JsonObject();
        oKeys.set(Output.Name, Json.getString(request.getNode(), ApiRequest.Fields.Node.Id) + " " + Json.getString(request.getNode(), ApiRequest.Fields.Node.Version));
        oKeys.set(Output.Endpoint, request.getScheme() + "://" + request.getEndpoint() + Lang.SLASH + api.space().getNamespace() + Lang.SLASH + api.getNamespace());
        oKeys.set(KeyPair.Fields.AccessKey, kp.accessKey());
        oKeys.set(KeyPair.Fields.SecretKey, kp.secretKey());
        oKeys.set(CommonSpec.Role, "SUPER");
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        Json.encrypt(oKeys, paraphrase, out);
        return new ApiByteArrayOutput(Output.KeysName + Lang.DOT + Output.KeysExt, Base64.encodeBase64(out.toByteArray()), ApiContentTypes.Stream, Output.KeysExt).set(ApiOutput.Defaults.Disposition, "attachment");
    } catch (Exception e) {
        throw new ApiServiceExecutionException(e.getMessage()).status(ApiResponse.FORBIDDEN);
    }
}
Also used : KeyPair(com.bluenimble.platform.security.KeyPair) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) JsonObject(com.bluenimble.platform.json.JsonObject) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ApiByteArrayOutput(com.bluenimble.platform.api.impls.ApiByteArrayOutput) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException)

Example 32 with JsonObject

use of com.bluenimble.platform.json.JsonObject in project serverless by bluenimble.

the class GetKeysSpi method toOutput.

private ApiOutput toOutput(KeyPair kp, String paraphrase, ApiSpace keysSpace, Api api, ApiRequest request) throws EncryptionProviderException {
    JsonObject oKeys = new JsonObject();
    oKeys.set(Output.Name, keysSpace.getName());
    oKeys.set(Output.Space, keysSpace.getNamespace());
    oKeys.set(Output.Endpoint, request.getScheme() + "://" + request.getEndpoint() + Lang.SLASH + api.space().getNamespace() + Lang.SLASH + api.getNamespace());
    oKeys.set(Output.Domain, request.getScheme() + "://" + request.getEndpoint() + Lang.SLASH + keysSpace.getNamespace());
    if (kp.expiryDate() != null) {
        oKeys.set(KeyPair.Fields.ExpiryDate, Lang.toUTC(kp.expiryDate()));
    }
    oKeys.set(KeyPair.Fields.AccessKey, kp.accessKey());
    oKeys.set(KeyPair.Fields.SecretKey, kp.secretKey());
    Iterator<String> props = kp.properties();
    if (props != null) {
        JsonObject oProps = new JsonObject();
        oKeys.set(KeyPair.Fields.Properties, oProps);
        while (props.hasNext()) {
            String p = props.next();
            oProps.set(p, kp.property(p));
        }
    }
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    Json.encrypt(oKeys, paraphrase, out);
    return new ApiByteArrayOutput(keysSpace.getNamespace() + Lang.DOT + Output.KeysExt, Base64.encodeBase64(out.toByteArray()), ApiContentTypes.Stream, Output.KeysExt).set(ApiOutput.Defaults.Disposition, "attachment");
}
Also used : JsonObject(com.bluenimble.platform.json.JsonObject) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ApiByteArrayOutput(com.bluenimble.platform.api.impls.ApiByteArrayOutput)

Example 33 with JsonObject

use of com.bluenimble.platform.json.JsonObject in project serverless by bluenimble.

the class MgmApiSpi method findConsumer.

@Override
public void findConsumer(Api api, ApiService service, ApiRequest request, ApiConsumer consumer) throws ApiAuthenticationException {
    Type type = consumer.type();
    if ("container".equals(request.getChannel())) {
        consumer.override((ApiConsumer) request.get(ApiRequest.Consumer));
        return;
    }
    if (!this.isSecure(service)) {
        return;
    }
    if (!type.equals(Type.Signature)) {
        throw new ApiAuthenticationException("unsupported authentication mechanism");
    }
    String accessKey = (String) consumer.get(ApiConsumer.Fields.AccessKey);
    final JsonObject oConsumer = Json.getObject(consumers, accessKey);
    if (oConsumer == null || oConsumer.isEmpty()) {
        throw new ApiAuthenticationException("accessKey not found");
    }
    Iterator<String> keys = oConsumer.keys();
    if (keys == null) {
        return;
    }
    while (keys.hasNext()) {
        String key = keys.next();
        consumer.set(key, oConsumer.get(key));
    }
}
Also used : Type(com.bluenimble.platform.api.security.ApiConsumer.Type) ApiAuthenticationException(com.bluenimble.platform.api.security.ApiAuthenticationException) JsonObject(com.bluenimble.platform.json.JsonObject)

Example 34 with JsonObject

use of com.bluenimble.platform.json.JsonObject in project serverless by bluenimble.

the class ChangeApiStatusSpi method execute.

@Override
public ApiOutput execute(Api api, ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
    String apiNs = (String) request.get(CommonSpec.Api);
    String sAction = (String) request.getResource()[request.getResource().length - 1];
    Action action = null;
    try {
        action = Action.valueOf(sAction);
    } catch (Exception ex) {
    // ignore
    }
    if (action == null) {
        throw new ApiServiceExecutionException("unknown change-status action " + sAction).status(ApiResponse.BAD_REQUEST);
    }
    ApiSpace space = null;
    try {
        space = MgmUtils.space(consumer, api);
        switch(action) {
            case start:
                space.start(apiNs);
                break;
            case stop:
                space.stop(apiNs);
                break;
            case pause:
                space.pause(apiNs);
                break;
            case resume:
                space.resume(apiNs);
                break;
            default:
                break;
        }
    } catch (Exception ex) {
        throw new ApiServiceExecutionException(ex.getMessage(), ex);
    }
    Api targetApi = space.api(apiNs);
    JsonObject result = (JsonObject) new JsonObject().set(Api.Spec.Status, targetApi.status().name());
    if (ApiStatus.Failed.equals(targetApi.status())) {
        result.set(Output.Reason, targetApi.getFailure());
    }
    return new JsonApiOutput(result);
}
Also used : ApiSpace(com.bluenimble.platform.api.ApiSpace) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) JsonObject(com.bluenimble.platform.json.JsonObject) Api(com.bluenimble.platform.api.Api) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) JsonApiOutput(com.bluenimble.platform.api.impls.JsonApiOutput)

Example 35 with JsonObject

use of com.bluenimble.platform.json.JsonObject in project serverless by bluenimble.

the class DeleteEntrySpi method execute.

@Override
public ApiOutput execute(Api api, final ApiConsumer consumer, ApiRequest request, ApiResponse response) throws ApiServiceExecutionException {
    String provider = (String) request.get(CommonSpec.Provider);
    String key = (String) request.get(Spec.Key);
    ApiSpace space;
    try {
        space = MgmUtils.space(consumer, api);
    } catch (ApiAccessDeniedException e) {
        throw new ApiServiceExecutionException(e.getMessage(), e).status(ApiResponse.FORBIDDEN);
    }
    Cache cache = space.feature(Cache.class, provider, request);
    cache.delete(key);
    return new JsonApiOutput((JsonObject) new JsonObject().set(CommonOutput.Deleted, true));
}
Also used : ApiAccessDeniedException(com.bluenimble.platform.api.ApiAccessDeniedException) ApiSpace(com.bluenimble.platform.api.ApiSpace) ApiServiceExecutionException(com.bluenimble.platform.api.ApiServiceExecutionException) JsonObject(com.bluenimble.platform.json.JsonObject) JsonApiOutput(com.bluenimble.platform.api.impls.JsonApiOutput) Cache(com.bluenimble.platform.cache.Cache)

Aggregations

JsonObject (com.bluenimble.platform.json.JsonObject)230 ApiServiceExecutionException (com.bluenimble.platform.api.ApiServiceExecutionException)40 DatabaseObject (com.bluenimble.platform.db.DatabaseObject)37 JsonArray (com.bluenimble.platform.json.JsonArray)37 JsonApiOutput (com.bluenimble.platform.api.impls.JsonApiOutput)34 Database (com.bluenimble.platform.db.Database)29 ApiSpace (com.bluenimble.platform.api.ApiSpace)26 File (java.io.File)25 ApiAccessDeniedException (com.bluenimble.platform.api.ApiAccessDeniedException)23 Map (java.util.Map)22 IOException (java.io.IOException)20 CommandExecutionException (com.bluenimble.platform.cli.command.CommandExecutionException)17 JsonQuery (com.bluenimble.platform.db.query.impls.JsonQuery)16 InputStream (java.io.InputStream)14 Date (java.util.Date)14 DefaultCommandResult (com.bluenimble.platform.cli.command.impls.DefaultCommandResult)13 ApiManagementException (com.bluenimble.platform.api.ApiManagementException)12 DefaultDatabaseObjectSerializer (com.bluenimble.platform.db.impls.DefaultDatabaseObjectSerializer)11 HashMap (java.util.HashMap)11 DatabaseException (com.bluenimble.platform.db.DatabaseException)9