Skip to content

Latest commit

 

History

History
166 lines (119 loc) · 4.59 KB

README_ja.md

File metadata and controls

166 lines (119 loc) · 4.59 KB

kbsky

Maven Central Version

badge badge badge

このライブラリは Kotlin Multiplatform に対応した Bluesky/ATProtocol クライアントライブラリです。 khttpclient を依存関係に持っており、 内部で Ktor Client を使用しています。 そのため、本ライブラリは、Kotlin Multiplatform かつ Ktor Client がサポートしているプラットフォームであれば利用可能です。 各プラットフォームでどのような挙動をするのかについては、khttpclient に依存します。

使い方

以下は対応するプラットフォームにおいて Gradle を用いて Kotlin で使用する際の使い方になります。 **Apple プラットフォームで使用する場合は、 kbsky-cocoapods を参照してください。 ** また、テストコードも合わせて確認してください。

Stable (Maven Central)

repositories {
    mavenCentral()
}

dependencies {
+   implementation("work.socialhub.kbsky:core:0.1.0")
+   implementation("work.socialhub.kbsky:stream:0.1.0")
}

Snapshot

repositories {
+   maven { url = uri("https://repo.repsy.io/mvn/uakihir0/public") }
}

dependencies {
+   implementation("work.socialhub.kbsky:core:0.2.0-SNAPSHOT")
+   implementation("work.socialhub.kbsky:stream:0.2.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 での認証については長くなるので、OAuthによる認証 を参照してください。

PLC Directory

val response = PLCDirectoryFactory
    .instance()
    .DIDDetails(did)

println(checkNotNull(response.data.alsoKnownAs)[0])

SubscribeRepos (stream)

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

作者

Akihiro Urushihara