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

com.snowplowanalytics.snowplow.sinks.pubsub.PubsubSinkConfig.scala Maven / Gradle / Ivy

There is a newer version: 0.8.0-M5
Show newest version
/*
 * Copyright (c) 2023-present Snowplow Analytics Ltd. All rights reserved.
 *
 * This program is licensed to you under the Snowplow Community License Version 1.0,
 * and you may not use this file except in compliance with the Snowplow Community License Version 1.0.
 * You may obtain a copy of the Snowplow Community License Version 1.0 at https://docs.snowplow.io/community-license-1.0
 */
package com.snowplowanalytics.snowplow.sinks.pubsub

import io.circe.Decoder
import io.circe.generic.semiauto._

import com.snowplowanalytics.snowplow.pubsub.GcpUserAgent

case class PubsubSinkConfig(
  topic: PubsubSinkConfig.Topic,
  batchSize: Long,
  requestByteThreshold: Long,
  gcpUserAgent: GcpUserAgent
)

object PubsubSinkConfig {
  case class Topic(projectId: String, topicId: String)

  private implicit def topicDecoder: Decoder[Topic] =
    Decoder.decodeString
      .map(_.split("/"))
      .emap {
        case Array("projects", projectId, "topics", topicId) =>
          Right(Topic(projectId, topicId))
        case _ =>
          Left("Expected format: projects//topics/")
      }

  implicit def decoder: Decoder[PubsubSinkConfig] = deriveDecoder[PubsubSinkConfig]
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy