com.onfido.api.client.UploadDocumentAPI Maven / Gradle / Ivy
package com.onfido.api.client;
import com.onfido.api.client.data.DocType;
import com.onfido.api.client.data.DocumentMediaIntegrity;
import com.onfido.api.client.data.DocumentMediaUploadResponse;
import com.onfido.api.client.data.DocumentUpload;
import com.onfido.api.client.data.InternalDocSide;
import com.onfido.api.client.data.PoaDocumentType;
import com.onfido.api.client.data.PoaDocumentUpload;
import com.onfido.api.client.data.SdkUploadMetaData;
import com.onfido.api.client.token.InternalToken;
import com.onfido.api.client.token.TokenProvider;
import com.onfido.api.client.token.sdk.InternalSDKToken;
import com.onfido.api.client.util.HashUtil;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.core.Single;
import okhttp3.RequestBody;
import retrofit2.Call;
class UploadDocumentAPI {
private final TokenProvider tokenProvider;
private final OnfidoService onfidoService;
UploadDocumentAPI(
TokenProvider tokenProvider,
OnfidoService onfidoService
) {
this.tokenProvider = tokenProvider;
this.onfidoService = onfidoService;
}
// API V3 specific
Call upload(
String fileName,
DocType documentType,
String fileType,
byte[] data,
Map validations,
InternalDocSide side,
String issuingCountry,
SdkUploadMetaData sdkUploadMetaData,
String sdkSource,
String sdkVersion
) {
MultipartDocumentRequestBuilder builder = new MultipartDocumentRequestBuilder(sdkSource, sdkVersion);
RequestBody body = builder.setMultipartRequestBody(
fileName,
documentType,
fileType,
data,
validations,
side,
issuingCountry,
sdkUploadMetaData,
null
).build();
return onfidoService.upload(body);
}
Single uploadSingle(
String fileName,
DocType documentType,
String fileType,
byte[] data,
String mediaType,
SdkUploadMetaData sdkUploadMetaData,
String sdkSource,
String sdkVersion
) {
MultipartDocumentRequestBuilder builder = new MultipartDocumentRequestBuilder(sdkSource, sdkVersion);
RequestBody body = builder.setMultipartRequestBody(
fileName,
documentType,
fileType,
data,
null,
null,
null,
sdkUploadMetaData,
mediaType
).build();
return onfidoService.uploadSingle(body);
}
Single poaUpload(
String fileName,
PoaDocumentType poaDocumentType,
String fileType,
byte[] data,
String issuingCountry,
SdkUploadMetaData sdkUploadMetaData,
String sdkSource,
String sdkVersion
) {
MultipartDocumentRequestBuilder builder = new MultipartDocumentRequestBuilder(sdkSource, sdkVersion);
RequestBody body = builder.setPoaMultipartRequestBody(
fileName,
poaDocumentType,
fileType,
data,
issuingCountry,
sdkUploadMetaData
).build();
return onfidoService.uploadPoa(body);
}
Single uploadVideo(
String documentId,
String videoPath,
SdkUploadMetaData sdkUploadMetaData,
String sdkSource,
String sdkVersion,
DocumentMediaIntegrity documentMediaIntegrity,
InternalDocSide docSide,
DocType docType,
@Nullable String issuingCountry
) {
String mediaSignature = null;
String clientNonce = null;
MultipartDocumentRequestBuilder builder = new MultipartDocumentRequestBuilder(sdkSource, sdkVersion);
RequestBody body = builder.setMultipartRequestBody(
documentId,
videoPath,
sdkUploadMetaData,
docSide,
docType,
issuingCountry
).build();
if (documentMediaIntegrity != null) {
mediaSignature = documentMediaIntegrity.getSignatureBase64();
clientNonce = documentMediaIntegrity.getClientNonce();
}
return onfidoService.uploadDocumentVideo(mediaSignature, clientNonce, body)
.map(DocumentUpload::getId);
}
public Single uploadDocumentMedia(
String fileName,
String fileType,
String mediaType,
@Nullable String docSide,
@Nullable String docType,
Map validations,
byte[] data,
SdkUploadMetaData sdkUploadMetaData,
String sdkSource,
String sdkVersion
) {
String hashedFile = HashUtil.sha256(data, getUuid());
DocumentMediaRequestBuilder builder = new DocumentMediaRequestBuilder(sdkSource, sdkVersion);
RequestBody requestBody = builder.setMultipartRequestBody(
fileName,
fileType,
data,
mediaType,
docSide,
docType,
validations,
sdkUploadMetaData
).build();
return onfidoService.uploadMediaFile(hashedFile, requestBody);
}
private String getUuid() {
InternalToken token = tokenProvider.provideToken();
return (token instanceof InternalSDKToken) ? ((InternalSDKToken) token).getUuid() : "";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy