commonMain.app.bsky.actor.profile.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bluesky-jvm Show documentation
Show all versions of bluesky-jvm Show documentation
Bluesky Social API bindings for Kotlin.
The newest version!
@file:Suppress("DEPRECATION")
package app.bsky.actor
import com.atproto.repo.StrongRef
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmInline
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import sh.christian.ozone.api.model.Blob
import sh.christian.ozone.api.model.Timestamp
import sh.christian.ozone.api.runtime.valueClassSerializer
@Serializable
public sealed interface ProfileLabelsUnion {
public class SelfLabelsSerializer : KSerializer by valueClassSerializer(
serialName = "com.atproto.label.defs#selfLabels",
constructor = ::SelfLabels,
valueProvider = SelfLabels::value,
valueSerializerProvider = { com.atproto.label.SelfLabels.serializer() },
)
@Serializable(with = SelfLabelsSerializer::class)
@JvmInline
@SerialName("com.atproto.label.defs#selfLabels")
public value class SelfLabels(
public val `value`: com.atproto.label.SelfLabels,
) : ProfileLabelsUnion
}
/**
* @param description Free-form profile description text.
* @param avatar Small image to be displayed next to posts from account. AKA, 'profile picture'
* @param banner Larger horizontal image to display behind profile view.
* @param labels Self-label values, specific to the Bluesky application, on the overall account.
*/
@Serializable
public data class Profile(
public val displayName: String? = null,
/**
* Free-form profile description text.
*/
public val description: String? = null,
/**
* Small image to be displayed next to posts from account. AKA, 'profile picture'
*/
public val avatar: Blob? = null,
/**
* Larger horizontal image to display behind profile view.
*/
public val banner: Blob? = null,
/**
* Self-label values, specific to the Bluesky application, on the overall account.
*/
public val labels: ProfileLabelsUnion? = null,
public val joinedViaStarterPack: StrongRef? = null,
public val pinnedPost: StrongRef? = null,
public val createdAt: Timestamp? = null,
) {
init {
require(displayName == null || displayName.count() <= 640) {
"displayName.count() must be <= 640, but was ${displayName?.count()}"
}
require(description == null || description.count() <= 2_560) {
"description.count() must be <= 2_560, but was ${description?.count()}"
}
}
}