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

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