このライブラリは Kotlin Multiplatform に対応した Bluesky/ATProtocol クライアントライブラリです。 khttpclient を依存関係に持っており、 内部で Ktor Client を使用しています。 そのため、本ライブラリは、Kotlin Multiplatform かつ Ktor Client がサポートしているプラットフォームであれば利用可能です。 各プラットフォームでどのような挙動をするのかについては、khttpclient に依存します。
以下は対応するプラットフォームにおいて Gradle を用いて Kotlin で使用する際の使い方になります。 **Apple プラットフォームで使用する場合は、 kbsky-cocoapods を参照してください。 ** また、テストコードも合わせて確認してください。
repositories {
mavenCentral()
}
dependencies {
+ implementation("work.socialhub.kbsky:core:0.2.0")
+ implementation("work.socialhub.kbsky:stream:0.2.0")
}
repositories {
+ maven { url = uri("https://repo.repsy.io/mvn/uakihir0/public") }
}
dependencies {
+ implementation("work.socialhub.kbsky:core:0.3.0-SNAPSHOT")
+ implementation("work.socialhub.kbsky:stream:0.3.0-SNAPSHOT")
}
ハンドルとパスワードを指定してセッションを開始する場合は以下のようにします。
val response = BlueskyFactory
.instance(BSKY_SOCIAL.uri)
.server()
.createSession(
ServerCreateSessionRequest().also {
it.identifier = HANDLE
it.password = PASSWORD
}
)
println(response.data.accessJwt)
取得したアクセストークンで各種リソースにアクセスするには以下のように実行します。
val auth = BearerTokenAuthProvider(accessJwt)
BlueskyFactory
.instance(BSKY_SOCIAL.uri)
.feed()
.post(
FeedPostRequest(auth).also {
it.text = "Hello World!"
}
)
パスワードでの認証は徐々に OAuth による認証に移行される予定です。 OAuth での認証については長くなるので、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