こんにちは、やぎにいです。
やぎすけ Advent Calendar 2016の13日目です。
昨日は僕がRxLifecycleでのライフサイクルへのバインドについてを書きました。
今日は昨日一昨日と紹介したRxJava
を使ったライブラリを作ってみたので紹介します。
名前はRxBox
です(超直球)
リポジトリは公開していてGitHub - yagi2/RxBoxになります。
機能としてはDropbox Core SDK for Java 6+の機能をRxJavaでラッピングしたものです。
DropboxのAPIはちょくちょくAndroidのアプリで使ったりするのですが、めっちゃ使いづらかったりします(個人的な感想)
あとDropbox Core SDK for JavaのAndroidサンプルや、記事をググっても大体AsyncTaskのクラスを作ってコールバックで処理しまくるものです。
Androidの機能を使っていないのでJavaライブラリです。AndroidでもJavaでも使えます。
そこで個人的にRxJavaのObserverを返すクラスを作っていたのですが、他のアプリ作成でも使う場面が出てきたので思い切ってライブラリにしてみました。
バージョン0.0.1とあるように、現在自分が使っているメソッドしかライブラリ化出来ていません。
今後はメソッドの充実を図ります。ある程度メソッドが揃ったらv1.0として公開したいです。
それまではWIPなライブラリとして公開しています。
今はjcenterに登録できていないので、自分でビルドする必要があります。
リポジトリをcloneして./gradlew jar
を行えばrxbox/build/libs/rxbox.jar
が作成されるのでこれをJavaプロジェクトやAndroidプロジェクトにインポートしてください。
各メソッドはObservable<T>
を返すので以下のように使います。
以下はユーザのアカウントデータを取得するサンプルコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | // for Java Project RxBox.getCurrentAccount(DbxClientV2) .toSingle() .subscribe(new SingleSubscriber<FullAccount> { @Override public void onSuccess(FullAccount account) { // ここでアカウントデータをいじれる } @Override public void onError(Throwable error) { // Error } }); // for Android Project with RxLifecycle and RxAndroid RxBox.getCurrentAccount(DbxClientV2) .subscribeOn(Schedules.io()) .toSingle() .compose(bindToLifecycle().<FullAccount>forSingle()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SingleSubscriber<FullAccount> { @Override public void onSuccess(FullAccount account) { // ここでアカウントデータをいじれる } @Override public void onError(Throwable error) { // Error } }); |
あんまりDropboxAPIを気にせず使うことができるようになりました。
DbxClientV2
を渡してあげてください。
使い方としては、認証→アクセストークンを保持→アクセストークンを使ってDbxClientV2
を作成→RxBox
に渡すという感じです。
理由としてはAndroidだとcom.dropbox.core.android.AuthActivity
で認証できちゃうためです。
これは非常に便利な認証アクティビティで、RxBox
で認証周りを追加するまでに至らなかったためです。
もちろんこれはAndroid用に用意されたものでJavaプロジェクトでは使えません。
僕自身あまりAndroid以外でJavaのプロジェクトを触ることがないのでJavaでは必要だけどAndroidではいらないみたいなものは実装後回しになります。ごめんなさい。
Javaライブラリにした理由は冒頭でも上げたとおりAndroidの機能を一切使わないためです。
これからはメソッドの充実とテストの追加などをやっていきたいと思います。
あと現状.jarファイルを自分で作ってインポートしないと使えないので早急にjCenterに登録したいと思います。
bintrayに登録したのですが、個人のリポジトリを作れない(オーガニゼーションでは作れる)ので、それが解決したらとっととあげたいです。
gradleをご覧いただければわかるのですが準備はできています……。
いろんなbintrayを使ってjcenterに登録している記事を見てもどれもリポジトリをつくるボタンがあるのが存在しないのでbintrayに問い合わせた次第です。
どなたか解決方法知っていたら教えていただけると幸いです。
AndroidプロジェクトでDropboxAPIを使うときは是非試してみてください。
以上、やぎにいでした!
<< GitHubレポジトリにMavenのリポジトリを作成する RxLifecycleでのライフサイクルへのバインドについて >>
2018やぎ小屋