SDKを使ってPHPでDropBoxのAPIを扱う

 個人で作っていたWebアプリを久々に見ていたら、ファイル関連でうまく動作していないことに気が付き、調べてみると、どうやらDropBoxAPIがバージョンアップした影響のようでした。というわけで今まで使っていたSDKは使えないようです。

旧バージョン対応のSDKというのはこれです。

github.com

新バージョン対応のSDKはこちら。サムネイルが僕並のイケメンですね。

github.com

どちらも有志ですね。すごいなあ。

とまあそういうわけで、新しいSDKを用いたラッパークラスを作ってみました。

<?php
//このプログラムは kunalvarma05/dropbox-php-sdk を用いて、
//PHPでDropBoxを扱うためのラッパークラスです。
//参考:https://github.com/kunalvarma05/dropbox-php-sdk
use Kunnu\Dropbox\Dropbox;
use Kunnu\Dropbox\DropboxApp;
use Kunnu\Dropbox\DropboxFile;
use Kunnu\Dropbox\Exception;
class OperateDropbox{
    private $accessToken = 'your-DropBox-APPs-AccessToken';
    private $key = 'your-DropBox-APPKey';
    Private $secret = 'your-DropBox-APPsecret';
    private $dropbox;  
 
    //DropBoxに接続するクライアント作成
    public function MakeClient(){
        $app = new DropboxApp($this->key,
            $this->secret, $this->accessToken);
        $this->dropbox = new Dropbox($app);
    }
    
    //DropBoxにファイル保存
    public function UploadToDropBox($filePathOnDropBox, $filePathOnLocal){
        try{
            $dropboxFile = new DropboxFile($filePathOnLocal);
            $file = $this->dropbox->upload($dropboxFile,
                $filePathOnDropBox, ['autorename' => true]);
            return true;
        }catch(DropboxClientException $ex){
            return false;
        }
    }
    
    //Dropboxからファイルをダウンロード
    public function DownLoadToLocal($filePathOnDropBox, $filePathOnLocal){
        try{
            $file = $this->dropbox->download($filePathOnDropBox);
            $content = $file->getContents();
            file_put_contents($filePathOnLocal, $content);
            $metadata = $file->getMetadata();
            $metadata->getName();
            return true;
        }catch(DropboxClientException $ex){
            return false;
        }
    }
    
    //Dropboxからファイル削除
    public function DeleteFromDropBox($filePathOnDropBox){
        try{
            $res = $this->dropbox->delete($filePathOnDropBox);
            return true;
        }catch(DropboxClientException $ex){
            return false;
        }
    }
}


$operateDropBox = new OperateDropbox();
$operateDropBox->MakeClient();
$operateDropBox->anyFunction();

?>

アップロード、ダウンロード、削除っていう基本機能ですが、よかったらぜひ使ってみてください。何か間違っていたらご指摘いただけると嬉しいです。

Gistはこちら→DropBoxWrapper.php · GitHub