in src/com/intellij/idea/plugin/hybris/tools/ccv2/api/CCv2Api.kt [57:103]
suspend fun fetchEnvironments(
ccv2Token: String,
subscription: CCv2Subscription,
statuses: List<String>,
progressReporter: ProgressReporter
): Collection<CCv2EnvironmentDto> {
val ccv1Api = CCv1Api.getInstance()
val subscriptions2Permissions = ccv1Api.fetchPermissions(ccv2Token)
?.associateBy { it.scopeName }
?: return emptyList()
val subscriptionCode = subscription.id!!
val subscriptionPermissions = subscriptions2Permissions[subscriptionCode]
?: return emptyList()
return progressReporter.sizedStep(1, "Fetching Environments for subscription: $subscription") {
statuses
.map { status ->
async {
environmentApi.getEnvironments(
subscriptionCode = subscriptionCode,
status = status,
requestHeaders = createRequestParams(ccv2Token)
)
}
}
.awaitAll()
.flatMapToNullableSet { it.value }
?.map { env ->
val canAccess = subscriptionPermissions.environments?.contains(env.code) ?: true
async {
val v1Env = getV1Environment(canAccess, ccv1Api, ccv2Token, env)
val v1EnvHealth = getV1EnvironmentHealth(canAccess, ccv1Api, ccv2Token, env)
env to Triple(canAccess, v1Env, v1EnvHealth)
}
}
?.awaitAll()
?.map { (environment, details) ->
CCv2EnvironmentDto.map(environment, details.first, details.second, details.third)
}
?: emptyList()
}
}