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

io.github.vigoo.zioaws.route53resolver.model.CreateResolverEndpointRequest.scala Maven / Gradle / Ivy

package io.github.vigoo.zioaws.route53resolver.model
import zio.ZIO
import io.github.vigoo.zioaws.route53resolver.model.primitives.{
  ResourceId,
  Name,
  CreatorRequestId
}
import io.github.vigoo.zioaws.core.{AwsError, BuilderHelper}
import scala.jdk.CollectionConverters._
final case class CreateResolverEndpointRequest(
    creatorRequestId: CreatorRequestId,
    name: Option[Name] = None,
    securityGroupIds: Iterable[ResourceId],
    direction: io.github.vigoo.zioaws.route53resolver.model.ResolverEndpointDirection,
    ipAddresses: Iterable[
      io.github.vigoo.zioaws.route53resolver.model.IpAddressRequest
    ],
    tags: Option[Iterable[io.github.vigoo.zioaws.route53resolver.model.Tag]] =
      None
) {
  def buildAwsValue()
      : software.amazon.awssdk.services.route53resolver.model.CreateResolverEndpointRequest = {
    import CreateResolverEndpointRequest.zioAwsBuilderHelper.BuilderOps
    software.amazon.awssdk.services.route53resolver.model.CreateResolverEndpointRequest
      .builder()
      .creatorRequestId(creatorRequestId: java.lang.String)
      .optionallyWith(name.map(value => value: java.lang.String))(_.name)
      .securityGroupIds(securityGroupIds.map { item =>
        item: java.lang.String
      }.asJavaCollection)
      .direction(direction.unwrap)
      .ipAddresses(ipAddresses.map { item =>
        item.buildAwsValue()
      }.asJavaCollection)
      .optionallyWith(
        tags.map(value =>
          value.map { item =>
            item.buildAwsValue()
          }.asJavaCollection
        )
      )(_.tags)
      .build()
  }
  def asReadOnly
      : io.github.vigoo.zioaws.route53resolver.model.CreateResolverEndpointRequest.ReadOnly =
    io.github.vigoo.zioaws.route53resolver.model.CreateResolverEndpointRequest
      .wrap(buildAwsValue())
}
object CreateResolverEndpointRequest {
  private lazy val zioAwsBuilderHelper: BuilderHelper[
    software.amazon.awssdk.services.route53resolver.model.CreateResolverEndpointRequest
  ] = BuilderHelper.apply
  trait ReadOnly {
    def editable
        : io.github.vigoo.zioaws.route53resolver.model.CreateResolverEndpointRequest =
      io.github.vigoo.zioaws.route53resolver.model
        .CreateResolverEndpointRequest(
          creatorRequestIdValue,
          nameValue.map(value => value),
          securityGroupIdsValue,
          directionValue,
          ipAddressesValue.map { item =>
            item.editable
          },
          tagsValue.map(value =>
            value.map { item =>
              item.editable
            }
          )
        )
    def creatorRequestIdValue: CreatorRequestId
    def nameValue: Option[Name]
    def securityGroupIdsValue: List[ResourceId]
    def directionValue
        : io.github.vigoo.zioaws.route53resolver.model.ResolverEndpointDirection
    def ipAddressesValue: List[
      io.github.vigoo.zioaws.route53resolver.model.IpAddressRequest.ReadOnly
    ]
    def tagsValue: Option[
      List[io.github.vigoo.zioaws.route53resolver.model.Tag.ReadOnly]
    ]
    def creatorRequestId: ZIO[Any, Nothing, CreatorRequestId] =
      ZIO.succeed(creatorRequestIdValue)
    def name: ZIO[Any, AwsError, Name] =
      AwsError.unwrapOptionField("name", nameValue)
    def securityGroupIds: ZIO[Any, Nothing, List[ResourceId]] =
      ZIO.succeed(securityGroupIdsValue)
    def direction: ZIO[
      Any,
      Nothing,
      io.github.vigoo.zioaws.route53resolver.model.ResolverEndpointDirection
    ] = ZIO.succeed(directionValue)
    def ipAddresses: ZIO[Any, Nothing, List[
      io.github.vigoo.zioaws.route53resolver.model.IpAddressRequest.ReadOnly
    ]] = ZIO.succeed(ipAddressesValue)
    def tags: ZIO[Any, AwsError, List[
      io.github.vigoo.zioaws.route53resolver.model.Tag.ReadOnly
    ]] = AwsError.unwrapOptionField("tags", tagsValue)
  }
  private class Wrapper(
      impl: software.amazon.awssdk.services.route53resolver.model.CreateResolverEndpointRequest
  ) extends io.github.vigoo.zioaws.route53resolver.model.CreateResolverEndpointRequest.ReadOnly {
    override def creatorRequestIdValue: CreatorRequestId =
      impl.creatorRequestId(): CreatorRequestId
    override def nameValue: Option[Name] =
      scala.Option(impl.name()).map(value => value: Name)
    override def securityGroupIdsValue: List[ResourceId] = impl
      .securityGroupIds()
      .asScala
      .map { item =>
        item: ResourceId
      }
      .toList
    override def directionValue
        : io.github.vigoo.zioaws.route53resolver.model.ResolverEndpointDirection =
      io.github.vigoo.zioaws.route53resolver.model.ResolverEndpointDirection
        .wrap(impl.direction())
    override def ipAddressesValue: List[
      io.github.vigoo.zioaws.route53resolver.model.IpAddressRequest.ReadOnly
    ] = impl
      .ipAddresses()
      .asScala
      .map { item =>
        io.github.vigoo.zioaws.route53resolver.model.IpAddressRequest.wrap(item)
      }
      .toList
    override def tagsValue: Option[
      List[io.github.vigoo.zioaws.route53resolver.model.Tag.ReadOnly]
    ] = scala
      .Option(impl.tags())
      .map(value =>
        value.asScala.map { item =>
          io.github.vigoo.zioaws.route53resolver.model.Tag.wrap(item)
        }.toList
      )
  }
  def wrap(
      impl: software.amazon.awssdk.services.route53resolver.model.CreateResolverEndpointRequest
  ): io.github.vigoo.zioaws.route53resolver.model.CreateResolverEndpointRequest.ReadOnly =
    new Wrapper(impl)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy