From 654a8148752d007a2affde18dabe5a7055e1bf52 Mon Sep 17 00:00:00 2001 From: Vihang Patil Date: Sat, 30 Nov 2019 14:17:29 +0100 Subject: [PATCH] Updated secure-archive with Arrow FX --- .../prime/securearchive/SecureArchiver.kt | 52 +++++++++---------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/secure-archive/src/main/kotlin/org/ostelco/prime/securearchive/SecureArchiver.kt b/secure-archive/src/main/kotlin/org/ostelco/prime/securearchive/SecureArchiver.kt index d3fc9e26f..83ba04ab9 100644 --- a/secure-archive/src/main/kotlin/org/ostelco/prime/securearchive/SecureArchiver.kt +++ b/secure-archive/src/main/kotlin/org/ostelco/prime/securearchive/SecureArchiver.kt @@ -1,9 +1,7 @@ package org.ostelco.prime.securearchive import arrow.core.Either -import arrow.core.fix -import arrow.effects.IO -import arrow.instances.either.monad.monad +import arrow.core.extensions.fx import org.ostelco.prime.getLogger import org.ostelco.prime.securearchive.ConfigRegistry.config import org.ostelco.prime.securearchive.util.Encrypter.Companion.getEncrypter @@ -23,31 +21,29 @@ class SecureArchiver : SecureArchiveService { fileName: String, dataMap: Map): Either { - return IO { - Either.monad().binding { - val bucketName = config.storageBucket - logger.info("Generating Plain Zip data for customerId = {}", customerId) - val plainZipData = generateZipFile(fileName, dataMap).bind() - (regionCodes - .filter(config.regions::contains) - + "global") - .map(String::toLowerCase) - .forEach { regionCode -> - logger.info("Encrypt for region: {} for customerId = {}", regionCode, customerId) - val zipData = getEncrypter(regionCode).encrypt(plainZipData) - if (bucketName.isEmpty()) { - val filePath = "${regionCode}_$fileName.zip.tk" - logger.info("No bucket set, saving file locally {}", filePath) - saveLocalFile(filePath, zipData).bind() - } else { - val filePath = "$customerId/${fileName}_${Instant.now()}.zip.tk" - val bucket = "$bucketName-$regionCode" - logger.info("Saving in cloud storage {} --> {}", bucket, filePath) - uploadFileToCloudStorage(bucket, filePath, zipData).bind() - } + return Either.fx { + val bucketName = config.storageBucket + logger.info("Generating Plain Zip data for customerId = {}", customerId) + val plainZipData = generateZipFile(fileName, dataMap).bind() + (regionCodes + .filter(config.regions::contains) + + "global") + .map(String::toLowerCase) + .forEach { regionCode -> + logger.info("Encrypt for region: {} for customerId = {}", regionCode, customerId) + val zipData = getEncrypter(regionCode).encrypt(plainZipData) + if (bucketName.isEmpty()) { + val filePath = "${regionCode}_$fileName.zip.tk" + logger.info("No bucket set, saving file locally {}", filePath) + saveLocalFile(filePath, zipData).bind() + } else { + val filePath = "$customerId/${fileName}_${Instant.now()}.zip.tk" + val bucket = "$bucketName-$regionCode" + logger.info("Saving in cloud storage {} --> {}", bucket, filePath) + uploadFileToCloudStorage(bucket, filePath, zipData).bind() } - Unit - }.fix() - }.unsafeRunSync() + } + Unit + } } } \ No newline at end of file