Kotlin multiplatform Bluesky/ATProtocol library.
This library is a Bluesky/ATProtocol client library compatible with Kotlin Multiplatform. It depends on khttpclient and uses Ktor Client internally. Therefore, this library can be used on any platform supported by Kotlin Multiplatform and Ktor Client. The behavior on each platform depends on khttpclient. Also, due to limitations of KtorClient, on which khttpclient depends, the stream package is not available on Linux platforms.
Below is how to use it with Kotlin on the supported platforms using Gradle.
If you are using it on an Apple platform, please refer
to kbsky-cocoapods.
Additionally, please check the test code as well.
repositories {
mavenCentral()
}
dependencies {
+ implementation("work.socialhub.kbsky:core:0.3.0")
+ implementation("work.socialhub.kbsky:auth:0.3.0")
+ implementation("work.socialhub.kbsky:stream:0.3.0")
}
repositories {
+ maven { url = uri("https://repo.repsy.io/mvn/uakihir0/public") }
}
dependencies {
+ implementation("work.socialhub.kbsky:core:0.4.0-SNAPSHOT")
+ implementation("work.socialhub.kbsky:auth:0.4.0-SNAPSHOT")
+ implementation("work.socialhub.kbsky:stream:0.4.0-SNAPSHOT")
}
All of the above can be added to and used in regular Java projects, too. All you have to do is to use the suffix -jvm
when listing the dependency.
Here is a sample Maven configuration:
<dependency>
<groupId>work.socialhub.kbsky</groupId>
<artifactId>core-jvm</artifactId>
<version>[VERSION]</version>
</dependency>
To start a session by specifying a handle and password, do as follows:
val response = BlueskyFactory
.instance(BSKY_SOCIAL.uri)
.server()
.createSession(
ServerCreateSessionRequest().also {
it.identifier = HANDLE
it.password = PASSWORD
}
)
println(response.data.accessJwt)
To access various resources with the obtained access token, execute the following:
val auth = BearerTokenAuthProvider(accessJwt)
BlueskyFactory
.instance(BSKY_SOCIAL.uri)
.feed()
.post(
FeedPostRequest(auth).also {
it.text = "Hello World!"
}
)
Authentication using a password is gradually being replaced with OAuth. For more details on OAuth authentication, please refer to Authentication via OAuth.
val response = PLCDirectoryFactory
.instance()
.DIDDetails(did)
println(checkNotNull(response.data.alsoKnownAs)[0])
val stream = ATProtocolStreamFactory
.instance(
apiUri = BSKY_SOCIAL.uri,
streamUri = BSKY_NETWORK.uri
)
.sync()
.subscribeRepos(
SyncSubscribeReposRequest().also {
it.filter = listOf(
"app.bsky.feed.post"
)
}
)
stream.eventCallback(
object : EventCallback {
override fun onEvent(
cid: String?,
uri: String?,
record: RecordUnion
) {
print(record)
}
})
MIT License
Kotlin Multiplatform bindings for Bluesky
Telnet client for Bluesky + AT Protocol
A graceful multiplatform bluesky client
Mastdon\Bluesky\RSS client, implementation based on Kotlin Multiplatform and Compose Multiplatform.
An experimental ATP/Bluesky client app for Android
Your Brand Here!
50K+ engaged viewers every month
Limited spots available!
📧 Contact us via email🦋 Contact us on Bluesky