
io.github.vigoo.zioaws.pi.package.scala Maven / Gradle / Ivy
package io.github.vigoo.zioaws
import io.github.vigoo.zioaws.core._
import io.github.vigoo.zioaws.core.aspects._
import io.github.vigoo.zioaws.core.config.AwsConfig
import io.github.vigoo.zioaws.core.httpclient.ServiceHttpCapabilities
import software.amazon.awssdk.core.client.config.{ ClientAsyncConfiguration, SdkAdvancedAsyncClientOption }
import software.amazon.awssdk.services.pi.{ PiAsyncClient, PiAsyncClientBuilder }
import zio.{ Chunk, Has, IO, URLayer, ZIO, ZLayer, ZManaged }
import zio.stream.ZStream
import org.reactivestreams.Publisher
import scala.jdk.CollectionConverters._
package object pi {
type Pi = Has[Pi.Service]
object Pi {
trait Service extends AspectSupport[Service] {
val api: PiAsyncClient
def describeDimensionKeys(request: model.DescribeDimensionKeysRequest): ZIO[Any, AwsError, StreamingOutputResult[Any, model.DescribeDimensionKeysResponse.ReadOnly, model.DimensionKeyDescription.ReadOnly]]
def getDimensionKeyDetails(request: model.GetDimensionKeyDetailsRequest): IO[AwsError, model.GetDimensionKeyDetailsResponse.ReadOnly]
def getResourceMetrics(request: model.GetResourceMetricsRequest): ZIO[Any, AwsError, StreamingOutputResult[Any, model.GetResourceMetricsResponse.ReadOnly, model.MetricKeyDataPoints.ReadOnly]]
}
object PiMock extends zio.test.mock.Mock[Pi] {
object DescribeDimensionKeys extends Effect[model.DescribeDimensionKeysRequest, AwsError, StreamingOutputResult[Any, model.DescribeDimensionKeysResponse.ReadOnly, model.DimensionKeyDescription.ReadOnly]]
object GetDimensionKeyDetails extends Effect[model.GetDimensionKeyDetailsRequest, AwsError, model.GetDimensionKeyDetailsResponse.ReadOnly]
object GetResourceMetrics extends Effect[model.GetResourceMetricsRequest, AwsError, StreamingOutputResult[Any, model.GetResourceMetricsResponse.ReadOnly, model.MetricKeyDataPoints.ReadOnly]]
val compose: URLayer[Has[zio.test.mock.Proxy], Pi] = ZLayer.fromServiceM {
proxy => withRuntime.map {
rts => new Pi.Service {
val api: PiAsyncClient = null
def withAspect[R1](newAspect: AwsCallAspect[R1], r: R1): Pi.Service = this
def describeDimensionKeys(request: model.DescribeDimensionKeysRequest): ZIO[Any, AwsError, StreamingOutputResult[Any, model.DescribeDimensionKeysResponse.ReadOnly, model.DimensionKeyDescription.ReadOnly]] = proxy(DescribeDimensionKeys, request)
def getDimensionKeyDetails(request: model.GetDimensionKeyDetailsRequest): IO[AwsError, model.GetDimensionKeyDetailsResponse.ReadOnly] = proxy(GetDimensionKeyDetails, request)
def getResourceMetrics(request: model.GetResourceMetricsRequest): ZIO[Any, AwsError, StreamingOutputResult[Any, model.GetResourceMetricsResponse.ReadOnly, model.MetricKeyDataPoints.ReadOnly]] = proxy(GetResourceMetrics, request)
}
}
}
}
}
val live: ZLayer[AwsConfig, Throwable, Pi] = customized(identity)
def customized(customization: PiAsyncClientBuilder => PiAsyncClientBuilder): ZLayer[AwsConfig, Throwable, Pi] = managed(customization).toLayer
def managed(customization: PiAsyncClientBuilder => PiAsyncClientBuilder): ZManaged[AwsConfig, Throwable, Pi.Service] = for (awsConfig <- ZManaged.service[AwsConfig.Service]; executor <- ZIO.executor.toManaged_; builder = PiAsyncClient.builder().asyncConfiguration(ClientAsyncConfiguration.builder().advancedOption(SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR, executor.asJava).build()); b0 <- awsConfig.configure[PiAsyncClient, PiAsyncClientBuilder](builder).toManaged_; b1 <- awsConfig.configureHttpClient[PiAsyncClient, PiAsyncClientBuilder](b0, ServiceHttpCapabilities(supportsHttp2 = false)).toManaged_; client <- ZIO(customization(b1).build()).toManaged_) yield new PiImpl(client, AwsCallAspect.identity, ().asInstanceOf[Any])
private class PiImpl[R](override val api: PiAsyncClient, override val aspect: AwsCallAspect[R], r: R) extends Pi.Service with AwsServiceBase[R, PiImpl] {
override val serviceName: String = "Pi"
override def withAspect[R1](newAspect: AwsCallAspect[R1], r: R1): PiImpl[R1] = new PiImpl(api, newAspect, r)
def describeDimensionKeys(request: model.DescribeDimensionKeysRequest): ZIO[Any, AwsError, StreamingOutputResult[Any, model.DescribeDimensionKeysResponse.ReadOnly, model.DimensionKeyDescription.ReadOnly]] = asyncPaginatedRequest[software.amazon.awssdk.services.pi.model.DescribeDimensionKeysRequest, software.amazon.awssdk.services.pi.model.DescribeDimensionKeysResponse, software.amazon.awssdk.services.pi.model.DimensionKeyDescription]("describeDimensionKeys", api.describeDimensionKeys, (r, token) => r.toBuilder().nextToken(token).build(), r => Option(r.nextToken()), r => Chunk.fromIterable(r.keys().asScala))(request.buildAwsValue()).map(result => result.mapResponse(model.DescribeDimensionKeysResponse.wrap).mapOutput(_.map(item => model.DimensionKeyDescription.wrap(item))).provide(r)).provide(r)
def getDimensionKeyDetails(request: model.GetDimensionKeyDetailsRequest): IO[AwsError, model.GetDimensionKeyDetailsResponse.ReadOnly] = asyncRequestResponse[software.amazon.awssdk.services.pi.model.GetDimensionKeyDetailsRequest, software.amazon.awssdk.services.pi.model.GetDimensionKeyDetailsResponse]("getDimensionKeyDetails", api.getDimensionKeyDetails)(request.buildAwsValue()).map(model.GetDimensionKeyDetailsResponse.wrap).provide(r)
def getResourceMetrics(request: model.GetResourceMetricsRequest): ZIO[Any, AwsError, StreamingOutputResult[Any, model.GetResourceMetricsResponse.ReadOnly, model.MetricKeyDataPoints.ReadOnly]] = asyncPaginatedRequest[software.amazon.awssdk.services.pi.model.GetResourceMetricsRequest, software.amazon.awssdk.services.pi.model.GetResourceMetricsResponse, software.amazon.awssdk.services.pi.model.MetricKeyDataPoints]("getResourceMetrics", api.getResourceMetrics, (r, token) => r.toBuilder().nextToken(token).build(), r => Option(r.nextToken()), r => Chunk.fromIterable(r.metricList().asScala))(request.buildAwsValue()).map(result => result.mapResponse(model.GetResourceMetricsResponse.wrap).mapOutput(_.map(item => model.MetricKeyDataPoints.wrap(item))).provide(r)).provide(r)
}
def describeDimensionKeys(request: model.DescribeDimensionKeysRequest): ZIO[Pi, AwsError, StreamingOutputResult[Any, model.DescribeDimensionKeysResponse.ReadOnly, model.DimensionKeyDescription.ReadOnly]] = ZIO.accessM(_.get.describeDimensionKeys(request))
def getDimensionKeyDetails(request: model.GetDimensionKeyDetailsRequest): ZIO[Pi, AwsError, model.GetDimensionKeyDetailsResponse.ReadOnly] = ZIO.accessM(_.get.getDimensionKeyDetails(request))
def getResourceMetrics(request: model.GetResourceMetricsRequest): ZIO[Pi, AwsError, StreamingOutputResult[Any, model.GetResourceMetricsResponse.ReadOnly, model.MetricKeyDataPoints.ReadOnly]] = ZIO.accessM(_.get.getResourceMetrics(request))
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy