com.yoti.api.client.sandbox.YotiSandboxClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of yoti-sdk-sandbox Show documentation
Show all versions of yoti-sdk-sandbox Show documentation
Java SDK for simple integration with the Sandbox Yoti platform
The newest version!
package com.yoti.api.client.sandbox;
import static com.yoti.api.client.spi.remote.call.HttpMethod.HTTP_POST;
import static com.yoti.api.client.spi.remote.call.YotiConstants.DEFAULT_YOTI_HOST;
import static com.yoti.api.client.spi.remote.util.Validation.notNull;
import static com.yoti.api.client.spi.remote.util.Validation.notNullOrEmpty;
import java.io.IOException;
import java.net.URISyntaxException;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
import com.yoti.api.client.InitialisationException;
import com.yoti.api.client.KeyPairSource;
import com.yoti.api.client.sandbox.profile.request.YotiTokenRequest;
import com.yoti.api.client.sandbox.profile.response.YotiTokenResponse;
import com.yoti.api.client.spi.remote.KeyStreamVisitor;
import com.yoti.api.client.spi.remote.call.JsonResourceFetcher;
import com.yoti.api.client.spi.remote.call.ResourceException;
import com.yoti.api.client.spi.remote.call.ResourceFetcher;
import com.yoti.api.client.spi.remote.call.SignedRequest;
import com.yoti.api.client.spi.remote.call.SignedRequestBuilder;
import com.yoti.api.client.spi.remote.call.SignedRequestBuilderFactory;
import com.yoti.api.client.spi.remote.call.YotiConstants;
import com.yoti.api.client.spi.remote.call.factory.SignedMessageFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class YotiSandboxClient {
public static final String YOTI_SANDBOX_PATH_PREFIX = "/sandbox/v1";
private static final String DEFAULT_SANDBOX_API_URL = DEFAULT_YOTI_HOST + YOTI_SANDBOX_PATH_PREFIX;
private final String appId;
private final KeyPair keyPair;
private final String sandboxBasePath;
private final ObjectMapper mapper;
private final SandboxPathFactory sandboxPathFactory;
private final ResourceFetcher resourceFetcher;
private final SignedRequestBuilderFactory signedRequestBuilderFactory;
public static YotiSandboxClientBuilder builder() {
return new YotiSandboxClientBuilder();
}
YotiSandboxClient(String appId,
KeyPair keyPair,
SandboxPathFactory pathFactory,
ObjectMapper mapper,
ResourceFetcher resourceFetcher, SignedRequestBuilderFactory signedRequestBuilderFactory) {
this.appId = appId;
this.keyPair = keyPair;
this.sandboxPathFactory = pathFactory;
this.mapper = mapper;
this.resourceFetcher = resourceFetcher;
this.signedRequestBuilderFactory = signedRequestBuilderFactory;
this.sandboxBasePath = System.getProperty(YotiConstants.PROPERTY_YOTI_API_URL, DEFAULT_SANDBOX_API_URL);
notNullOrEmpty(sandboxBasePath, "Sandbox base path");
}
public String setupSharingProfile(YotiTokenRequest yotiTokenRequest) {
String requestPath = sandboxPathFactory.createSandboxPath(appId);
try {
byte[] body = mapper.writeValueAsBytes(yotiTokenRequest);
SignedRequest signedRequest = signedRequestBuilderFactory.create()
.withBaseUrl(sandboxBasePath)
.withEndpoint(requestPath)
.withKeyPair(keyPair)
.withHttpMethod(HTTP_POST)
.withPayload(body)
.build();
YotiTokenResponse yotiTokenResponse = resourceFetcher.doRequest(signedRequest, YotiTokenResponse.class);
return yotiTokenResponse.getToken();
} catch (IOException | GeneralSecurityException | ResourceException | URISyntaxException e) {
throw new SandboxException(e);
}
}
public static class YotiSandboxClientBuilder {
private static final Logger LOG = LoggerFactory.getLogger(YotiSandboxClientBuilder.class);
private String appId;
private KeyPair keyPair;
private YotiSandboxClientBuilder() {
}
public YotiSandboxClientBuilder forApplication(String appId) {
this.appId = appId;
return this;
}
public YotiSandboxClientBuilder withKeyPair(KeyPairSource keyPair) {
try {
LOG.debug("Loading key pair from '{}'", keyPair);
this.keyPair = keyPair.getFromStream(new KeyStreamVisitor());
} catch (IOException e) {
throw new InitialisationException("Cannot load key pair", e);
}
return this;
}
public YotiSandboxClient build() {
notNullOrEmpty(appId, "appId");
notNull(keyPair, "keyPair");
return new YotiSandboxClient(appId, keyPair, new SandboxPathFactory(), new ObjectMapper(), JsonResourceFetcher.newInstance(),
new SignedRequestBuilderFactory());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy