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

tech.deplant.java4ever.binding.AppPasswordProvider Maven / Gradle / Ivy

package tech.deplant.java4ever.binding;

import com.fasterxml.jackson.databind.JsonNode;

import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public abstract class AppPasswordProvider implements AppObject {

	public abstract Crypto.ResultOfAppPasswordProvider.GetPassword getPassword(String encryptionPublicKey);

	@Override
	public final void consumeParams(int contextId, long appRequestId, JsonNode jsonNode) throws EverSdkException {
		try (var exec = Executors.newVirtualThreadPerTaskExecutor()) {
			exec.submit(() -> {
				try {
					String requestMethod = jsonNode.get("type").asText();
					if ("GetPassword".equals(requestMethod)) {
						Crypto.ResultOfAppPasswordProvider.GetPassword password = getPassword(jsonNode.get(
								"encryptionPublicKey").asText());
						var resultNode = JsonContext.SDK_JSON_MAPPER()
						                            .valueToTree(password);
						Client.resolveAppRequest(contextId, appRequestId, new Client.AppRequestResult.Ok(resultNode));
					} else {
						throw new IllegalStateException("Unexpected value: " + jsonNode.get("type").asText());
					}
				} catch (Exception e) {
					try {
						Client.resolveAppRequest(contextId,
						                         appRequestId,
						                         new Client.AppRequestResult.Error(e.getMessage()));
					} catch (EverSdkException ex) {
						throw new RuntimeException(ex);
					}
				}
			});
			exec.shutdown();
			if (!exec.awaitTermination(60, TimeUnit.SECONDS)) {
				Client.resolveAppRequest(contextId,
				                         appRequestId,
				                         new Client.AppRequestResult.Error("Unsuccessful completion"));
			}
		} catch (Exception e) {
			Client.resolveAppRequest(contextId, appRequestId, new Client.AppRequestResult.Error(e.getMessage()));
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy