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
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ private DocScanConstants() { }
public static final String SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK = "SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK";
public static final String SUPPLEMENTARY_DOCUMENT_TEXT_DATA_EXTRACTION = "SUPPLEMENTARY_DOCUMENT_TEXT_DATA_EXTRACTION";

public static final String VERIFY_SHARE_CODE_TASK = "VERIFY_SHARE_CODE_TASK";

public static final String LIVENESS = "LIVENESS";
public static final String ZOOM = "ZOOM";
public static final String STATIC = "STATIC";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.yoti.api.client.docs.session.create;

import com.fasterxml.jackson.annotation.JsonProperty;

public class RequiredShareCodePayload {

@JsonProperty("issuer")
private final String issuer;

@JsonProperty("scheme")
private final String scheme;

private RequiredShareCodePayload(String issuer, String scheme) {
this.issuer = issuer;
this.scheme = scheme;
}

public String getIssuer() {
return issuer;
}

public String getScheme() {
return scheme;
}

public static RequiredShareCodePayload.Builder builder() {
return new RequiredShareCodePayload.Builder();
}

public static final class Builder {

private String issuer;
private String scheme;

/**
* Sets the issuer of the required Share Code
*
* @param issuer the issuer
* @return the builder
*/
public Builder withIssuer(String issuer) {
this.issuer = issuer;
return this;
}

/**
* Sets the scheme of the required Share Code
*
* @param scheme the scheme
* @return
*/
public Builder withScheme(String scheme) {
this.scheme = scheme;
return this;
}

/**
* Builds an {@link RequiredShareCodePayload} using the supplied properties in the builder.
*
* @return the built {@link RequiredShareCodePayload}
*/
public RequiredShareCodePayload build() {
return new RequiredShareCodePayload(issuer, scheme);
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ public class SessionSpec {
@JsonProperty("create_identity_profile_preview")
private final Boolean createIdentityProfilePreview;

@JsonProperty("required_share_codes")
private final List<RequiredShareCodePayload> requiredShareCodes;

SessionSpec(Integer clientSessionTokenTtl,
Integer resourcesTtl,
ImportTokenPayload importToken,
Expand All @@ -85,7 +88,8 @@ public class SessionSpec {
SubjectPayload subject,
ResourceCreationContainer resources,
Boolean createIdentityProfilePreview,
AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements) {
AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements,
List<RequiredShareCodePayload> requiredShareCodes) {
this.clientSessionTokenTtl = clientSessionTokenTtl;
this.resourcesTtl = resourcesTtl;
this.importToken = importToken;
Expand All @@ -103,6 +107,7 @@ public class SessionSpec {
this.resources = resources;
this.createIdentityProfilePreview = createIdentityProfilePreview;
this.advancedIdentityProfileRequirements = advancedIdentityProfileRequirements;
this.requiredShareCodes = requiredShareCodes;
}

public static Builder builder() {
Expand Down Expand Up @@ -263,6 +268,15 @@ public AdvancedIdentityProfileRequirementsPayload getAdvancedIdentityProfileRequ
return advancedIdentityProfileRequirements;
}

/**
* The list of Share Codes being requested.
*
* @return the requested Share Codes
*/
public List<RequiredShareCodePayload> getRequiredShareCodes() {
return requiredShareCodes;
}

public static class Builder {

private final List<RequestedCheck<?>> requestedChecks;
Expand All @@ -282,11 +296,13 @@ public static class Builder {
private SubjectPayload subject;
private ResourceCreationContainer resources;
private Boolean createIdentityProfilePreview;
private final List<RequiredShareCodePayload> requiredShareCodes;

private Builder() {
requestedChecks = new ArrayList<>();
requestedTasks = new ArrayList<>();
requiredDocuments = new ArrayList<>();
requiredShareCodes = new ArrayList<>();
}

/**
Expand Down Expand Up @@ -477,6 +493,17 @@ public Builder withAdvancedIdentityProfileRequirements(AdvancedIdentityProfileRe
return this;
}

/**
* Adds a required Share Code to the list
*
* @param requiredShareCode the required share code
* @return the builder
*/
public Builder withRequiredShareCode(RequiredShareCodePayload requiredShareCode) {
this.requiredShareCodes.add(requiredShareCode);
return this;
}

/**
* Builds the {@link SessionSpec} based on the values supplied to the builder
*
Expand All @@ -500,7 +527,8 @@ public SessionSpec build() {
subject,
resources,
createIdentityProfilePreview,
advancedIdentityProfileRequirementsPayload);
advancedIdentityProfileRequirementsPayload,
requiredShareCodes);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.yoti.api.client.docs.session.retrieve;

import com.yoti.api.client.Media;

import com.fasterxml.jackson.annotation.JsonProperty;

public class IdPhotoResponse {

@JsonProperty("media")
private Media media;

public Media getMedia() {
return media;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.yoti.api.client.docs.session.retrieve;

import com.yoti.api.client.Media;

import com.fasterxml.jackson.annotation.JsonProperty;

public class LookupProfileResponse {

@JsonProperty("media")
private Media media;

public Media getMedia() {
return media;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ public class ResourceContainer {
@JsonProperty("applicant_profiles")
private List<ApplicantProfileResourceResponse> applicantProfiles;

@JsonProperty("share_codes")
private List<ShareCodeResourceResponse> shareCodes;

/**
* Returns ID documents that were uploaded by the user
*
Expand Down Expand Up @@ -97,6 +100,15 @@ public List<ApplicantProfileResourceResponse> getApplicantProfiles() {
return applicantProfiles;
}

/**
* Returns ShareCode resources uploaded by the user
*
* @return the list of Share Code resources
*/
public List<ShareCodeResourceResponse> getShareCodes() {
return shareCodes;
}

ResourceContainer filterForCheck(CheckResponse checkResponse) {
ResourceContainer newResourceContainer = new ResourceContainer();
newResourceContainer.idDocuments = filterResources(this.idDocuments, checkResponse.getResourcesUsed());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.yoti.api.client.docs.session.retrieve;

import com.yoti.api.client.Media;

import com.fasterxml.jackson.annotation.JsonProperty;

public class ReturnedProfileResponse {

@JsonProperty("media")
private Media media;

public Media getMedia() {
return media;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.yoti.api.client.docs.session.retrieve;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

public class ShareCodeResourceResponse extends ResourceResponse {

@JsonProperty("lookup_profile")
private LookupProfileResponse lookupProfile;

@JsonProperty("returned_profile")
private ReturnedProfileResponse returnedProfile;

@JsonProperty("id_photo")
private IdPhotoResponse idPhoto;

@JsonProperty("file")
private FileResponse file;

public LookupProfileResponse getLookupProfile() {
return lookupProfile;
}

public ReturnedProfileResponse getReturnedProfile() {
return returnedProfile;
}

public IdPhotoResponse getIdPhoto() {
return idPhoto;
}

public FileResponse getFile() {
return file;
}

public List<ShareCodeTaskResponse> getVerifyShareCodeTasks() {
return filterTasksByType(ShareCodeTaskResponse.class);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.yoti.api.client.docs.session.retrieve;

public class ShareCodeTaskResponse extends TaskResponse {
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
@JsonSubTypes({
@JsonSubTypes.Type(value = IdDocTextExtractionTaskResponse.class, name = DocScanConstants.ID_DOCUMENT_TEXT_DATA_EXTRACTION),
@JsonSubTypes.Type(value = SupplementaryDocumentTextExtractionTaskResponse.class, name = DocScanConstants.SUPPLEMENTARY_DOCUMENT_TEXT_DATA_EXTRACTION),
@JsonSubTypes.Type(value = ShareCodeTaskResponse.class, name = DocScanConstants.VERIFY_SHARE_CODE_TASK)
})
public class TaskResponse {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.containsInRelativeOrder;
import static org.hamcrest.Matchers.hasItems;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.instanceOf;
Expand Down Expand Up @@ -39,6 +40,11 @@ public class SessionSpecTest {
private static final String SOME_SDK_CONFIG_LOCALE = "en";
private static final String SOME_SDK_CONFIG_PRESET_ISSUING_COUNTRY = "USA";

private static final String SOME_ISSUER = "UK_GOV";
private static final String SOME_SCHEME = "RTW";
private static final String SOME_OTHER_ISSUER = "someOtherIssuer";
private static final String SOME_OTHER_SCHEME = "someOtherScheme";

private static final String SOME_SDK_CONFIG_SUCCESS_URL = "https://yourdomain.com/some/success/endpoint";
private static final String SOME_SDK_CONFIG_ERROR_URL = "https://yourdomain.com/some/error/endpoint";

Expand Down Expand Up @@ -251,4 +257,37 @@ public void shouldBuildWithImportToken() {
assertThat(sessionSpec.getImportToken(), is(importTokenMock));
}

@Test
public void shouldBuildWithSingleRequiredShareCode() {
RequiredShareCodePayload requiredShareCodePayload = RequiredShareCodePayload.builder()
.withIssuer(SOME_ISSUER)
.withScheme(SOME_SCHEME)
.build();

SessionSpec sessionSpec = SessionSpec.builder()
.withRequiredShareCode(requiredShareCodePayload)
.build();

assertThat(sessionSpec.getRequiredShareCodes(), containsInRelativeOrder(requiredShareCodePayload));
}

@Test
public void shouldBuildWithMultipleRequiredShareCodes() {
RequiredShareCodePayload requiredShareCodePayload1 = RequiredShareCodePayload.builder()
.withIssuer(SOME_ISSUER)
.withScheme(SOME_SCHEME)
.build();
RequiredShareCodePayload requiredShareCodePayload2 = RequiredShareCodePayload.builder()
.withIssuer(SOME_OTHER_ISSUER)
.withScheme(SOME_OTHER_SCHEME)
.build();

SessionSpec sessionSpec = SessionSpec.builder()
.withRequiredShareCode(requiredShareCodePayload1)
.withRequiredShareCode(requiredShareCodePayload2)
.build();

assertThat(sessionSpec.getRequiredShareCodes(), containsInRelativeOrder(requiredShareCodePayload1, requiredShareCodePayload2));
}

}
Loading