All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yoti.api.client.docs.session.retrieve.ResourceContainer Maven / Gradle / Ivy

The newest version!
package com.yoti.api.client.docs.session.retrieve;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import com.fasterxml.jackson.annotation.JsonProperty;

public class ResourceContainer {

    @JsonProperty("id_documents")
    private List idDocuments;

    @JsonProperty("supplementary_documents")
    private List supplementaryDocuments;

    @JsonProperty("liveness_capture")
    private List livenessCapture;

    @JsonProperty("face_capture")
    private List faceCapture;

    @JsonProperty("applicant_profiles")
    private List applicantProfiles;

    /**
     * Returns ID documents that were uploaded by the user
     *
     * @return the list of documents
     */
    public List getIdDocuments() {
        return idDocuments;
    }

    /**
     * Returns supplementary documents that were uploaded by the user
     *
     * @return the list of supplementary documents
     */
    public List getSupplementaryDocuments() {
        return supplementaryDocuments;
    }

    /**
     * Returns liveness resources uploaded by the user
     *
     * @return the list of liveness resources
     */
    public List getLivenessCapture() {
        return livenessCapture;
    }

    /**
     * Returns Face Captures resources uploaded by the user/relying business
     *
     * @return the list of face capture resources
     */
    public List getFaceCapture() {
        return faceCapture;
    }

    /**
     * Returns a filtered list of {@link LivenessResourceResponse} as {@link ZoomLivenessResourceResponse}
     *
     * @return the list of zoom liveness resources
     */
    public List getZoomLivenessResources() {
        return filterLivenessResourcesByType(ZoomLivenessResourceResponse.class);
    }

    /**
     * Returns a filtered list of {@link LivenessResourceResponse} as {@link StaticLivenessResourceResponse}
     *
     * @return the list of static liveness resources
     */
    public List getStaticLivenessResources() {
        return filterLivenessResourcesByType(StaticLivenessResourceResponse.class);
    }

    private  List filterLivenessResourcesByType(Class clazz) {
        if (livenessCapture == null) {
            return Collections.emptyList();
        } else {
            return livenessCapture.stream()
                    .filter(clazz::isInstance)
                    .map(clazz::cast)
                    .collect(Collectors.toList());
        }
    }

    /**
     * Returns ApplicantProfile resources uploaded by the user/relying business
     *
     * @return the list of applicant profile resources
     */
    public List getApplicantProfiles() {
        return applicantProfiles;
    }

    ResourceContainer filterForCheck(CheckResponse checkResponse) {
        ResourceContainer newResourceContainer = new ResourceContainer();
        newResourceContainer.idDocuments = filterResources(this.idDocuments, checkResponse.getResourcesUsed());
        newResourceContainer.supplementaryDocuments = filterResources(this.supplementaryDocuments, checkResponse.getResourcesUsed());
        newResourceContainer.livenessCapture = filterResources(this.livenessCapture, checkResponse.getResourcesUsed());
        newResourceContainer.faceCapture = filterResources(this.faceCapture, checkResponse.getResourcesUsed());
        newResourceContainer.applicantProfiles = filterResources(this.applicantProfiles, checkResponse.getResourcesUsed());
        return newResourceContainer;
    }

    private  List filterResources(List resources, List resourceIds) {
        if (resources == null) {
            return Collections.emptyList();
        }
        return resources.stream()
                .filter(resource -> resourceIds.contains(resource.getId()))
                .collect(Collectors.toList());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy