Use with Zio

Setup

You will need these dependencies:

sbt
libraryDependencies ++= Seq(
  "uk.gov.nationalarchives" % "da-eventbridge-client_2.13" % "0.1.123",
  "dev.zio" % "zio-interop-cats_2.13" % "23.0.0.5"
)
Maven
<dependencies>
  <dependency>
    <groupId>uk.gov.nationalarchives</groupId>
    <artifactId>da-eventbridge-client_2.13</artifactId>
    <version>0.1.123</version>
  </dependency>
  <dependency>
    <groupId>dev.zio</groupId>
    <artifactId>zio-interop-cats_2.13</artifactId>
    <version>23.0.0.5</version>
  </dependency>
</dependencies>
Gradle
dependencies {
  implementation "uk.gov.nationalarchives:da-eventbridge-client_2.13:0.1.123"
  implementation "dev.zio:zio-interop-cats_2.13:23.0.0.5"
}

zio-interop-cats is needed to allow us to use the ZIO Task with the cats type classes

Examples

Publish an event message

import cats.effect._
import uk.gov.nationalarchives.DAEventBridgeClient
import uk.gov.nationalarchives.DAEventBridgeClient.DetailType.DR2Message
import software.amazon.awssdk.services.eventbridge.model.PutEventsRequest
import zio._
import zio.interop.catz._
import io.circe.generic.auto._ // Used to provide Encoder[T] but you can provide your own

  enum DetailType:
    case TestMessage, TestDevMessage

  def publishToEventBridge(): Task[PutEventsResponse] = {
    val eventBridgeClient = DAEventBridgeClient[Task]()

    case class Detail(value: String)
    
    eventBridgeClient.publishEventToEventBridge[Detail]("sourceId", DR2Message, Detail("value"))
  }