Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 40 additions & 7 deletions src/main/java/com/skyflow/VaultClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,31 @@
import com.skyflow.generated.rest.resources.tokens.TokensClient;
import com.skyflow.generated.rest.resources.tokens.requests.V1DetokenizePayload;
import com.skyflow.generated.rest.resources.tokens.requests.V1TokenizePayload;
import com.skyflow.generated.rest.types.*;
import com.skyflow.generated.rest.types.Transformations;
import com.skyflow.generated.rest.types.*;
import com.skyflow.logs.ErrorLogs;
import com.skyflow.logs.InfoLogs;
import com.skyflow.serviceaccount.util.Token;
import com.skyflow.utils.Constants;
import com.skyflow.utils.Utils;
import com.skyflow.utils.logger.LogUtil;
import com.skyflow.utils.validations.Validations;
import com.skyflow.vault.data.FileUploadRequest;
import com.skyflow.vault.data.InsertRequest;
import com.skyflow.vault.data.UpdateRequest;
import com.skyflow.vault.detect.*;
import com.skyflow.vault.detect.DeidentifyFileRequest;
import com.skyflow.vault.detect.DeidentifyTextRequest;
import com.skyflow.vault.detect.*;
import com.skyflow.vault.tokens.ColumnValue;
import com.skyflow.vault.tokens.DetokenizeData;
import com.skyflow.vault.tokens.DetokenizeRequest;
import com.skyflow.vault.tokens.TokenizeRequest;
import io.github.cdimascio.dotenv.Dotenv;
import io.github.cdimascio.dotenv.DotenvException;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -78,7 +83,7 @@ protected StringsClient getDetectTextApi() {
return this.apiClient.strings();
}

protected FilesClient getDetectFileAPi(){
protected FilesClient getDetectFileAPi() {
return this.apiClient.files();
}

Expand Down Expand Up @@ -209,12 +214,41 @@ protected V1TokenizePayload getTokenizePayload(TokenizeRequest request) {
return payloadBuilder.build();
}

protected File getUploadFileColumnName(FileUploadRequest request) throws SkyflowException {
if (request.getBase64() != null) {
try {
byte[] decodedBytes = Base64.getDecoder().decode(request.getBase64());
File tempFile = new File(System.getProperty("java.io.tmpdir"), request.getFileName());
if (tempFile.exists()) {
boolean isDeleted = tempFile.delete();
}
boolean isCreated = tempFile.createNewFile();
try (FileOutputStream fos = new FileOutputStream(tempFile)) {
fos.write(decodedBytes);
}
return tempFile;
} catch (Exception e) {
LogUtil.printErrorLog(ErrorLogs.INVALID_BASE64_IN_FILE_UPLOAD.getLog());
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidBase64InFileUpload.getMessage());
}
} else if (request.getFilePath() != null) {
File file = new File(request.getFilePath());
if (!file.exists()) {
LogUtil.printErrorLog(ErrorLogs.INVALID_FILE_PATH_IN_FILE_UPLOAD.getLog());
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.InvalidFilePath.getMessage());
}
return file;
} else if (request.getFileObject() != null) {
return request.getFileObject();
} else return null;
}

protected void setBearerToken() throws SkyflowException {
prioritiseCredentials();
Validations.validateCredentials(this.finalCredentials);
if (this.finalCredentials.getApiKey() != null) {
LogUtil.printInfoLog(InfoLogs.REUSE_API_KEY.getLog());
token=this.finalCredentials.getApiKey();
token = this.finalCredentials.getApiKey();
} else if (Token.isExpired(token)) {
LogUtil.printInfoLog(InfoLogs.BEARER_TOKEN_EXPIRED.getLog());
token = Utils.generateBearerToken(this.finalCredentials);
Expand Down Expand Up @@ -334,7 +368,6 @@ protected ReidentifyStringRequest getReidentifyStringRequest(ReidentifyTextReque
.build();
}


private EntityInfo convertDetectedEntityToEntityInfo(DetectedEntity detectedEntity) {
TextIndex textIndex = new TextIndex(
detectedEntity.getLocation().get().getStartIndex().orElse(0),
Expand Down Expand Up @@ -387,7 +420,7 @@ private Transformations getTransformations(com.skyflow.vault.detect.Transformati
.build();
}

private List<EntityType> getEntityTypes(List<DetectEntities> entities){
private List<EntityType> getEntityTypes(List<DetectEntities> entities) {
List<EntityType> mappedEntityTypes = null;
if (entities != null) {
mappedEntityTypes = entities.stream()
Expand All @@ -398,7 +431,7 @@ private List<EntityType> getEntityTypes(List<DetectEntities> entities){
return mappedEntityTypes;
}

protected com.skyflow.generated.rest.resources.files.requests.DeidentifyTextRequest getDeidentifyTextFileRequest(DeidentifyFileRequest request, String vaultId, String base64Content){
protected com.skyflow.generated.rest.resources.files.requests.DeidentifyTextRequest getDeidentifyTextFileRequest(DeidentifyFileRequest request, String vaultId, String base64Content) {
List<EntityType> mappedEntityTypes = getEntityTypes(request.getEntities());

TokenFormat tokenFormat = request.getTokenFormat();
Expand Down
18 changes: 16 additions & 2 deletions src/main/java/com/skyflow/errors/ErrorMessage.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,21 @@ public enum ErrorMessage {
ColumnValuesKeyErrorTokenize("%s0 Validation error. 'columnValues' key is missing from the payload. Specify a 'columnValues' key."),
EmptyColumnGroupInColumnValue("%s0 Validation error. Invalid column group in column value. Specify a valid column group."),

// Upload file
InvalidFileUploadRequest("%s0 Validation error. Invalid file upload request. Specify a valid file upload request."),
TableNameKeyError("%s0 Validation error. 'tableName' key is missing from the payload. Specify a 'tableName' key."),
EmptyTableName("%s0 Validation error. 'tableName' can't be empty. Specify a table name."),
SkyflowIdKeyErrorInFileUpload("%s0 Validation error. 'skyflowId' key is missing from the payload. Specify a 'skyflowId' key."),
EmptySkyflowIdInFileUpload("%s0 Validation error. 'skyflowId' can't be empty. Specify a skyflow id."),
ColumnNameKeyErrorInFileUpload("%s0 Validation error. 'columnName' can't be empty. Specify a 'columnName' key."),
EmptyColumnNameInFileUpload("%s0 Validation error. 'columnName' can't be empty. Specify a column name."),
MissingFileSourceInFileUpload("%s0 Validation error. Provide exactly one of filePath, base64, or fileObject."),
MultipleFileSourcesInFileUpload("%s0 Validation error. Provide exactly one of filePath, base64, or fileObject."),
EmptyFilePathInFileUpload("%s0 Validation error. File path cannot be empty in file upload request. Specify a valid file path."),
MissingFileNameForBase64("%s0 Validation error. File name is required when providing a base64 string"),
InvalidFileObjectInFileUpload("%s0 Validation error. Invalid file object in file upload request. Specify a valid file object."),
InvalidBase64InFileUpload("%s0 Validation error. Invalid base64 string in file upload request. Specify a valid base64 string."),

// Connection
InvalidRequestHeaders("%s0 Validation error. Request headers aren't valid. Specify valid request headers."),
EmptyRequestHeaders("%s0 Validation error. Request headers are empty. Specify valid request headers."),
Expand Down Expand Up @@ -148,8 +163,7 @@ public enum ErrorMessage {
FailedtoSaveProcessedFile("%s0 Validation error. Failed to save the processed file. Ensure the output directory is valid and writable."),
InvalidAudioFileType("%s0 Validation error. The file type is not supported. Specify a valid file type mp3 or wav."),
// Generic
ErrorOccurred("%s0 API error. Error occurred.")
;
ErrorOccurred("%s0 API error. Error occurred.");
private final String message;

ErrorMessage(String message) {
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/com/skyflow/logs/ErrorLogs.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,17 @@ public enum ErrorLogs {
EMPTY_OR_NULL_COLUMN_GROUP_IN_COLUMN_VALUES("Invalid %s1 request. Column group can not be null or empty in column values at index %s2."),
TOKENIZE_REQUEST_REJECTED("Tokenize request resulted in failure."),
DELETE_REQUEST_REJECTED("Delete request resulted in failure."),
FILE_UPLOAD_REQUEST_REJECTED("File upload request resulted in failure."),

INVALID_FILE_UPLOAD_REQUEST("Invalid %s1 request. Invalid file upload request. Specify a valid file upload request."),
COLUMN_NAME_IS_REQUIRED_IN_FILE_UPLOAD("Invalid %s1 request. Column name is required."),
INVALID_FILE_SOURCES_IN_FILE_UPLOAD("Invalid %s1 request. Exactly one of 'filePath', 'base64', or 'fileObject' is required."),
MISSING_FILE_PATH_IN_FILE_UPLOAD("Invalid %s1 request. File path cannot be empty in file upload request. Specify a valid file path as string."),
MISSING_FILE_NAME_FOR_BASE64("Invalid %s1 request. File name is required when providing a base64 string"),
INVALID_FILE_OBJECT_IN_FILE_UPLOAD("Invalid %s1 request. Invalid file object in file upload request. Specify a valid file object."),
INVALID_FILE_PATH_IN_FILE_UPLOAD("Invalid %s1 request. Invalid file path in file upload request. Specify a valid file path."),
INVALID_BASE64_IN_FILE_UPLOAD("Invalid %s1 request. Invalid base64 string in file upload request. Specify a valid base64 string."),

// invoke connection interface
INVOKE_CONNECTION_INVALID_CONNECTION_URL("Invalid %s1 request. Connection URL is not a valid URL."),
EMPTY_REQUEST_HEADERS("Invalid %s1 request. Request headers can not be empty."),
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/skyflow/logs/InfoLogs.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ public enum InfoLogs {
TOKENIZE_REQUEST_RESOLVED("Tokenize request resolved."),
TOKENIZE_SUCCESS("Data tokenized."),

// File upload interface
FILE_UPLOAD_TRIGGERED("File upload method triggered."),
VALIDATE_FILE_UPLOAD_REQUEST("Validating file upload request."),
FILE_UPLOAD_REQUEST_RESOLVED("File upload request resolved."),
FILE_UPLOAD_SUCCESS("File uploaded successfully."),

// Invoke connection interface
INVOKE_CONNECTION_TRIGGERED("Invoke connection method triggered."),
Expand Down
Loading
Loading