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

com.iovation.launchkey.sdk.integration.managers.DirectoryManager Maven / Gradle / Ivy

There is a newer version: 4.10.0
Show newest version
/**
 * Copyright 2017 iovation, Inc.
 * 

* Licensed under the MIT License. * You may not use this file except in compliance with the License. * A copy of the License is located in the "LICENSE.txt" file accompanying * this file. This file is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.iovation.launchkey.sdk.integration.managers; import com.google.inject.Inject; import com.google.inject.Singleton; import com.iovation.launchkey.sdk.client.DirectoryClient; import com.iovation.launchkey.sdk.client.OrganizationClient; import com.iovation.launchkey.sdk.client.OrganizationFactory; import com.iovation.launchkey.sdk.domain.PublicKey; import com.iovation.launchkey.sdk.domain.organization.Directory; import com.iovation.launchkey.sdk.domain.servicemanager.Service; import com.iovation.launchkey.sdk.error.Forbidden; import com.iovation.launchkey.sdk.integration.Utils; import com.iovation.launchkey.sdk.integration.entities.DirectoryEntity; import com.iovation.launchkey.sdk.integration.entities.PublicKeyEntity; import io.cucumber.java.After; import java.net.URI; import java.security.interfaces.RSAPublicKey; import java.util.*; @Singleton public class DirectoryManager { private final Set directories = new HashSet<>(); private final OrganizationFactory factory; private List currentDirectoryEntityList = new ArrayList<>(); private List currentSdkKeys = new ArrayList<>(); private DirectoryEntity currentDirectoryEntity; private DirectoryEntity previousDirectoryEntity; private final OrganizationClient client; private Set currentPublicKeys = new HashSet<>(); @Inject public DirectoryManager(OrganizationFactory factory) { cleanupState(); this.factory = factory; client = factory.makeOrganizationClient(); } @After(order = 10000) public void cleanupState() { currentDirectoryEntity = null; previousDirectoryEntity = null; currentDirectoryEntityList.clear(); currentSdkKeys.clear(); currentPublicKeys.clear(); directories.clear(); } public DirectoryClient getDirectoryClient(UUID directoryId) { return this.factory.makeDirectoryClient(directoryId.toString()); } public DirectoryClient getDirectoryClient() { return this.factory.makeDirectoryClient(getCurrentDirectoryEntity().getId().toString()); } public UUID createDirectory(String name) throws Throwable { UUID id = client.createDirectory(name); previousDirectoryEntity = currentDirectoryEntity; currentDirectoryEntity = new DirectoryEntity(id, name, null, null, null, null, null, null, true, null); directories.add(currentDirectoryEntity); return id; } public UUID createDirectory() throws Throwable { String name = Utils.createRandomDirectoryName(); return createDirectory(name); } public DirectoryEntity getCurrentDirectoryEntity() { return currentDirectoryEntity; } public DirectoryEntity getPreviousDirectoryEntity() { return previousDirectoryEntity; } public void retrieveCurrentDirectory() throws Throwable { DirectoryEntity directory = retrieveDirectory(currentDirectoryEntity.getId()); previousDirectoryEntity = currentDirectoryEntity; currentDirectoryEntity = directory; } public void updateCurrentDirectory(Boolean active, String androidKey, String p12, String p12Fingerprint, Boolean denialContextInquiryEnabled, URI webhookUrl) throws Throwable { updateDirectory(currentDirectoryEntity.getId(), active, androidKey, p12, p12Fingerprint, denialContextInquiryEnabled, webhookUrl); } public void generateAndAddDirectorySdkKeyToCurrentDirectory() throws Throwable { generateAndAddDirectorySdkKeyToDirectory(currentDirectoryEntity.getId()); } public DirectoryEntity retrieveDirectory(UUID directoryId) throws Throwable { Directory directory = client.getDirectory(directoryId); return DirectoryEntity.fromDirectory(directory); } public void retrieveCurrentDirectoryAsList() throws Throwable { retrieveDirectoryList(Collections.singletonList(currentDirectoryEntity.getId())); } public List getCurrentDirectoryEntityList() { return currentDirectoryEntityList; } public void retrieveDirectoryList(List directoryIds) throws Throwable { setDirectoriesAsCurrentDirectoryEntityList(client.getDirectories(directoryIds)); } public void retrieveAllDirectories() throws Throwable { setDirectoriesAsCurrentDirectoryEntityList(client.getAllDirectories()); } private void setDirectoriesAsCurrentDirectoryEntityList(List directories) { currentDirectoryEntityList.clear(); for (Directory directory : directories) { currentDirectoryEntityList.add(DirectoryEntity.fromDirectory(directory)); } } public void generateAndAddDirectorySdkKeyToDirectory(UUID directoryId) throws Throwable { UUID sdkKey = client.generateAndAddDirectorySdkKey(directoryId); currentDirectoryEntity.getSdkKeys().add(sdkKey); } public void updateDirectory(UUID directoryId, Boolean active, String androidKey, String p12, String p12Fingerprint, Boolean denialContextInquiryEnabled, URI webhookUrl) throws Throwable { client.updateDirectory(directoryId, active, androidKey, p12, denialContextInquiryEnabled, webhookUrl); currentDirectoryEntity = new DirectoryEntity(currentDirectoryEntity.getId(), currentDirectoryEntity.getName(), active, currentDirectoryEntity.getServiceIds(), currentDirectoryEntity.getSdkKeys(), androidKey, p12Fingerprint, p12, denialContextInquiryEnabled, webhookUrl); } public void updateDirectory(UUID directoryId, boolean active) throws Throwable { client.updateDirectory(directoryId, active, null, null, null); } public void retrieveSDKKeyList(UUID directoryId) throws Throwable { List sdkKeys = client.getAllDirectorySdkKeys(directoryId); currentSdkKeys.clear(); currentSdkKeys.addAll(sdkKeys); } public void retrieveCurrentDirectorySdkKeys() throws Throwable { retrieveSDKKeyList(currentDirectoryEntity.getId()); } public List getCurrentSdkKeys() { return currentSdkKeys; } public void removeSdkKeyFromCurrentDirectory(UUID sdkKey) throws Throwable { removeSdkKeyFromDirectory(currentDirectoryEntity.getId(), sdkKey); } public void removeSdkKeyFromDirectory(UUID directoryId, UUID sdkKey) throws Throwable { client.removeDirectorySdkKey(directoryId, sdkKey); } public void addPublicKeyToCurrentDirectory(RSAPublicKey publicKey) throws Throwable { addPublicKeyToDirectory(currentDirectoryEntity.getId(), publicKey); } public void addPublicKeyToDirectory(UUID directoryId, RSAPublicKey publicKey) throws Throwable { addPublicKeyToDirectory(directoryId, publicKey, null, null); } public void addPublicKeyToDirectory(UUID directoryId, RSAPublicKey publicKey, Boolean active, Date expires) throws Throwable { String keyId = client.addDirectoryPublicKey(directoryId, publicKey, active, expires); currentDirectoryEntity.getPublicKeys().add(new PublicKeyEntity(keyId, publicKey, active, null, expires)); } public void addPublicKeyToCurrentDirectory(RSAPublicKey publicKey, boolean active, Date expires) throws Throwable { addPublicKeyToDirectory(currentDirectoryEntity.getId(), publicKey, active, expires); } public void retrieveCurrentDirectoryPublicKeysList() throws Throwable { List pubicKeys = new ArrayList<>(); for (PublicKey key : client.getDirectoryPublicKeys(currentDirectoryEntity.getId())) { pubicKeys.add(PublicKeyEntity.fromPublicKey(key)); } currentPublicKeys.clear(); currentPublicKeys.addAll(pubicKeys); } public Set getCurrentPublicKeys() { return currentPublicKeys; } public void updatePublicKey(String keyId, Boolean active, Date expires) throws Throwable { updatePublicKey(currentDirectoryEntity.getId(), keyId, active, expires); } public void updatePublicKey(UUID directoryId, String keyId, Boolean active, Date expires) throws Throwable { client.updateDirectoryPublicKey(directoryId, keyId, active, expires); if (directoryId == currentDirectoryEntity.getId()) { PublicKeyEntity currentPublicKeyEntity = null; for (PublicKeyEntity publicKeyEntity : currentDirectoryEntity.getPublicKeys()) { if (publicKeyEntity.getKeyId().equals(keyId)) { currentPublicKeyEntity = publicKeyEntity; } } Date created; RSAPublicKey publicKey; if (currentPublicKeyEntity == null) { publicKey = null; created = null; } else { publicKey = currentPublicKeyEntity.getPublicKey(); created = currentPublicKeyEntity.getCreated(); } currentPublicKeyEntity = new PublicKeyEntity(keyId, publicKey, active, created, expires); currentPublicKeys.add(currentPublicKeyEntity); } } public void removePublicKey(UUID directoryId, String keyId) throws Throwable { client.removeDirectoryPublicKey(directoryId, keyId); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy