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

nl.vroste.zio.kinesis.client.StreamIdentifier.scala Maven / Gradle / Ivy

The newest version!
package nl.vroste.zio.kinesis.client

import zio.aws.kinesis.model.primitives.{ StreamARN, StreamName }

sealed trait StreamIdentifier {
  def name: Option[StreamName]
  def arn: Option[StreamARN]
}

object StreamIdentifier {
  case class StreamIdentifierByName(streamName: StreamName) extends StreamIdentifier {
    override def name: Option[StreamName] = Some(streamName)

    override def arn: Option[StreamARN] = None
  }
  case class StreamIdentifierByArn(streamARN: StreamARN)    extends StreamIdentifier {
    override def name: Option[StreamName] = None

    override def arn: Option[StreamARN] = Some(streamARN)
  }

  def apply(streamIdentifier: String): StreamIdentifier =
    if (streamIdentifier.startsWith("arn:aws:kinesis")) StreamIdentifierByArn(StreamARN(streamIdentifier))
    else StreamIdentifierByName(StreamName(streamIdentifier))

  def fromName(streamName: StreamName) = StreamIdentifierByName(streamName)
  def fromARN(streamARN: StreamARN)    = StreamIdentifierByArn(streamARN)

  implicit def stringIsStreamIdentifier(stream: String): StreamIdentifier = StreamIdentifier(stream)

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy