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

commonMain.app.bsky.feed.getPostThread.kt Maven / Gradle / Ivy

The newest version!
@file:Suppress("DEPRECATION")

package app.bsky.feed

import kotlin.Any
import kotlin.Long
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmInline
import kotlinx.collections.immutable.toImmutableList
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import sh.christian.ozone.api.AtUri
import sh.christian.ozone.api.model.ReadOnlyList
import sh.christian.ozone.api.runtime.valueClassSerializer

@Serializable
public sealed interface GetPostThreadResponseThreadUnion {
  public class ThreadViewPostSerializer : KSerializer by valueClassSerializer(
    serialName = "app.bsky.feed.defs#threadViewPost",
    constructor = ::ThreadViewPost,
    valueProvider = ThreadViewPost::value,
    valueSerializerProvider = { app.bsky.feed.ThreadViewPost.serializer() },
  )

  @Serializable(with = ThreadViewPostSerializer::class)
  @JvmInline
  @SerialName("app.bsky.feed.defs#threadViewPost")
  public value class ThreadViewPost(
    public val `value`: app.bsky.feed.ThreadViewPost,
  ) : GetPostThreadResponseThreadUnion

  public class NotFoundPostSerializer : KSerializer by valueClassSerializer(
    serialName = "app.bsky.feed.defs#notFoundPost",
    constructor = ::NotFoundPost,
    valueProvider = NotFoundPost::value,
    valueSerializerProvider = { app.bsky.feed.NotFoundPost.serializer() },
  )

  @Serializable(with = NotFoundPostSerializer::class)
  @JvmInline
  @SerialName("app.bsky.feed.defs#notFoundPost")
  public value class NotFoundPost(
    public val `value`: app.bsky.feed.NotFoundPost,
  ) : GetPostThreadResponseThreadUnion

  public class BlockedPostSerializer : KSerializer by valueClassSerializer(
    serialName = "app.bsky.feed.defs#blockedPost",
    constructor = ::BlockedPost,
    valueProvider = BlockedPost::value,
    valueSerializerProvider = { app.bsky.feed.BlockedPost.serializer() },
  )

  @Serializable(with = BlockedPostSerializer::class)
  @JvmInline
  @SerialName("app.bsky.feed.defs#blockedPost")
  public value class BlockedPost(
    public val `value`: app.bsky.feed.BlockedPost,
  ) : GetPostThreadResponseThreadUnion
}

/**
 * @param uri Reference (AT-URI) to post record.
 * @param depth How many levels of reply depth should be included in response.
 * @param parentHeight How many levels of parent (and grandparent, etc) post to include.
 */
@Serializable
public data class GetPostThreadQueryParams(
  /**
   * Reference (AT-URI) to post record.
   */
  public val uri: AtUri,
  /**
   * How many levels of reply depth should be included in response.
   */
  public val depth: Long? = 6,
  /**
   * How many levels of parent (and grandparent, etc) post to include.
   */
  public val parentHeight: Long? = 80,
) {
  init {
    require(depth == null || depth >= 0) {
      "depth must be >= 0, but was $depth"
    }
    require(depth == null || depth <= 1_000) {
      "depth must be <= 1_000, but was $depth"
    }
    require(parentHeight == null || parentHeight >= 0) {
      "parentHeight must be >= 0, but was $parentHeight"
    }
    require(parentHeight == null || parentHeight <= 1_000) {
      "parentHeight must be <= 1_000, but was $parentHeight"
    }
  }

  public fun asList(): ReadOnlyList> = buildList {
    add("uri" to uri)
    add("depth" to depth)
    add("parentHeight" to parentHeight)
  }.toImmutableList()
}

@Serializable
public data class GetPostThreadResponse(
  public val thread: GetPostThreadResponseThreadUnion,
  public val threadgate: ThreadgateView? = null,
)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy