package io.cattle.platform.framework.encryption.request.handler; import io.github.ibuildthecloud.gdapi.util.TransformationService; import io.cattle.platform.util.type.CollectionUtils; import io.github.ibuildthecloud.gdapi.model.Field; import io.github.ibuildthecloud.gdapi.model.Schema; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.request.handler.AbstractApiRequestHandler; import java.io.IOException; import java.util.Map; import javax.inject.Inject; import org.apache.commons.lang3.StringUtils; public class TransformationHandler extends AbstractApiRequestHandler { @Inject TransformationService transformationService; @Override public void handle(ApiRequest request) throws IOException { if (request.isCommitted() || request.getRequestObject() == null) return; Map<String, Object> object = CollectionUtils.toMap(request.getRequestObject()); if (object.keySet().isEmpty()){ return; } Schema schema = request.getSchemaFactory().getSchema(request.getType()); if (schema == null){ return; } Map<String, Field> fields = schema.getResourceFields(); for (String fieldName: object.keySet()){ if (!fields.containsKey(fieldName) || object.get(fieldName) == null){ continue; } Field field = fields.get(fieldName); if (StringUtils.isNotBlank(field.getTransform())){ String encrypted = transformationService.transform((String) object.get(fieldName), field.getTransform()); object.put(fieldName, encrypted); } } } }