dropbox-java-sdkをRxJavaで使うライブラリを作ってみました

やぎすけAdventCalendar2016 Android Java

Posted on Dec 13


こんにちは、やぎにいです。
やぎすけ Advent Calendar 2016の13日目です。

昨日は僕がRxLifecycleでのライフサイクルへのバインドについてを書きました。

今日は昨日一昨日と紹介したRxJavaを使ったライブラリを作ってみたので紹介します。


RxBox

名前は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を使うときは是非試してみてください。

以上、やぎにいでした!


このエントリーをはてなブックマークに追加
comments powered by Disqus

<< GitHubレポジトリにMavenのリポジトリを作成する     RxLifecycleでのライフサイクルへのバインドについて >>



2018やぎ小屋