
io.github.vigoo.zioaws.elasticloadbalancing.model.CreateLoadBalancerRequest.scala Maven / Gradle / Ivy
package io.github.vigoo.zioaws.elasticloadbalancing.model
import zio.ZIO
import io.github.vigoo.zioaws.elasticloadbalancing.model.primitives.{
SubnetId,
AccessPointName,
SecurityGroupId,
LoadBalancerScheme,
AvailabilityZone
}
import io.github.vigoo.zioaws.core.{AwsError, BuilderHelper}
import scala.jdk.CollectionConverters._
final case class CreateLoadBalancerRequest(
loadBalancerName: AccessPointName,
listeners: Iterable[
io.github.vigoo.zioaws.elasticloadbalancing.model.Listener
],
availabilityZones: Option[Iterable[AvailabilityZone]] = None,
subnets: Option[Iterable[SubnetId]] = None,
securityGroups: Option[Iterable[SecurityGroupId]] = None,
scheme: Option[LoadBalancerScheme] = None,
tags: Option[
Iterable[io.github.vigoo.zioaws.elasticloadbalancing.model.Tag]
] = None
) {
def buildAwsValue()
: software.amazon.awssdk.services.elasticloadbalancing.model.CreateLoadBalancerRequest = {
import CreateLoadBalancerRequest.zioAwsBuilderHelper.BuilderOps
software.amazon.awssdk.services.elasticloadbalancing.model.CreateLoadBalancerRequest
.builder()
.loadBalancerName(loadBalancerName: java.lang.String)
.listeners(listeners.map { item =>
item.buildAwsValue()
}.asJavaCollection)
.optionallyWith(
availabilityZones.map(value =>
value.map { item =>
item: java.lang.String
}.asJavaCollection
)
)(_.availabilityZones)
.optionallyWith(
subnets.map(value =>
value.map { item =>
item: java.lang.String
}.asJavaCollection
)
)(_.subnets)
.optionallyWith(
securityGroups.map(value =>
value.map { item =>
item: java.lang.String
}.asJavaCollection
)
)(_.securityGroups)
.optionallyWith(scheme.map(value => value: java.lang.String))(_.scheme)
.optionallyWith(
tags.map(value =>
value.map { item =>
item.buildAwsValue()
}.asJavaCollection
)
)(_.tags)
.build()
}
def asReadOnly
: io.github.vigoo.zioaws.elasticloadbalancing.model.CreateLoadBalancerRequest.ReadOnly =
io.github.vigoo.zioaws.elasticloadbalancing.model.CreateLoadBalancerRequest
.wrap(buildAwsValue())
}
object CreateLoadBalancerRequest {
private lazy val zioAwsBuilderHelper: BuilderHelper[
software.amazon.awssdk.services.elasticloadbalancing.model.CreateLoadBalancerRequest
] = BuilderHelper.apply
trait ReadOnly {
def editable
: io.github.vigoo.zioaws.elasticloadbalancing.model.CreateLoadBalancerRequest =
io.github.vigoo.zioaws.elasticloadbalancing.model
.CreateLoadBalancerRequest(
loadBalancerNameValue,
listenersValue.map { item =>
item.editable
},
availabilityZonesValue.map(value => value),
subnetsValue.map(value => value),
securityGroupsValue.map(value => value),
schemeValue.map(value => value),
tagsValue.map(value =>
value.map { item =>
item.editable
}
)
)
def loadBalancerNameValue: AccessPointName
def listenersValue: List[
io.github.vigoo.zioaws.elasticloadbalancing.model.Listener.ReadOnly
]
def availabilityZonesValue: Option[List[AvailabilityZone]]
def subnetsValue: Option[List[SubnetId]]
def securityGroupsValue: Option[List[SecurityGroupId]]
def schemeValue: Option[LoadBalancerScheme]
def tagsValue: Option[
List[io.github.vigoo.zioaws.elasticloadbalancing.model.Tag.ReadOnly]
]
def loadBalancerName: ZIO[Any, Nothing, AccessPointName] =
ZIO.succeed(loadBalancerNameValue)
def listeners: ZIO[Any, Nothing, List[
io.github.vigoo.zioaws.elasticloadbalancing.model.Listener.ReadOnly
]] = ZIO.succeed(listenersValue)
def availabilityZones: ZIO[Any, AwsError, List[AvailabilityZone]] =
AwsError.unwrapOptionField("availabilityZones", availabilityZonesValue)
def subnets: ZIO[Any, AwsError, List[SubnetId]] =
AwsError.unwrapOptionField("subnets", subnetsValue)
def securityGroups: ZIO[Any, AwsError, List[SecurityGroupId]] =
AwsError.unwrapOptionField("securityGroups", securityGroupsValue)
def scheme: ZIO[Any, AwsError, LoadBalancerScheme] =
AwsError.unwrapOptionField("scheme", schemeValue)
def tags: ZIO[Any, AwsError, List[
io.github.vigoo.zioaws.elasticloadbalancing.model.Tag.ReadOnly
]] = AwsError.unwrapOptionField("tags", tagsValue)
}
private class Wrapper(
impl: software.amazon.awssdk.services.elasticloadbalancing.model.CreateLoadBalancerRequest
) extends io.github.vigoo.zioaws.elasticloadbalancing.model.CreateLoadBalancerRequest.ReadOnly {
override def loadBalancerNameValue: AccessPointName =
impl.loadBalancerName(): AccessPointName
override def listenersValue: List[
io.github.vigoo.zioaws.elasticloadbalancing.model.Listener.ReadOnly
] = impl
.listeners()
.asScala
.map { item =>
io.github.vigoo.zioaws.elasticloadbalancing.model.Listener.wrap(item)
}
.toList
override def availabilityZonesValue: Option[List[AvailabilityZone]] = scala
.Option(impl.availabilityZones())
.map(value =>
value.asScala.map { item =>
item: AvailabilityZone
}.toList
)
override def subnetsValue: Option[List[SubnetId]] = scala
.Option(impl.subnets())
.map(value =>
value.asScala.map { item =>
item: SubnetId
}.toList
)
override def securityGroupsValue: Option[List[SecurityGroupId]] = scala
.Option(impl.securityGroups())
.map(value =>
value.asScala.map { item =>
item: SecurityGroupId
}.toList
)
override def schemeValue: Option[LoadBalancerScheme] =
scala.Option(impl.scheme()).map(value => value: LoadBalancerScheme)
override def tagsValue: Option[
List[io.github.vigoo.zioaws.elasticloadbalancing.model.Tag.ReadOnly]
] = scala
.Option(impl.tags())
.map(value =>
value.asScala.map { item =>
io.github.vigoo.zioaws.elasticloadbalancing.model.Tag.wrap(item)
}.toList
)
}
def wrap(
impl: software.amazon.awssdk.services.elasticloadbalancing.model.CreateLoadBalancerRequest
): io.github.vigoo.zioaws.elasticloadbalancing.model.CreateLoadBalancerRequest.ReadOnly =
new Wrapper(impl)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy