前段
DirectCloud-BOXという、Dropboxを更に企業向けにして、FireStorageみたいにも使えるっぽいツールを使ってみた。
使った理由は、APIが充実していて、WEBGUIを使わずに共有とかができそうで、上手く活用すれば
顧客とのファイル受け渡しが楽になるかもなーと思いました。
あと、pythonのAPIモジュール製作の練習も兼ねて。requests便利だよ、requests。
APIについて
DirectCloud-BOXのAPIは、このサービスで出来ることは一通り揃っており、
ユーザの立場で使うものと、管理者の立場で使うものの2種類があります。
リファレンスはこちら。
https://directcloud.jp/api_reference
今回はユーザ向けのものしか触っていません。理由としては管理者の方は正直、画面で操作したほうが
UI的にも操作性は悪くないので、いいのかなと思いました。車輪の再発明はしたくない。
DirectCloud-BOXのAPI接続をするまで
DirectCloud-BOXの開始
まず、フリー版へ登録しましょう。
https://directcloud.jp/freeplan
フリー版でもAPIはすべて使える上、5GBのストレージ容量とユーザ数無制限で利用可能です。
ちょっとだけ有料版と差はあるものの、検証するにはなんの問題もありませんでした。
登録後にやること
会社ID、ユーザID、パスワードが発行されるとメールで通知されるので、管理者の管理画面にログインします。
ログインしたら、ユーザの管理など出来ることが色々ありますが、一目散に左メニューの「全機能一覧」を押して
共有 > DirectCloud-BOX API を使用するに設定し、APIのServiceとServiceKeyを作成します。
ここまでに出てきた、会社ID、ユーザID、パスワード、Service、ServiceKey すべてこの後利用するのでメモしておきます。
API接続
上記にも書いたとおり、APIは会社ID、ユーザID、パスワード、Service、ServiceKey を使ってAccessTokenを取得し、AccessTokenを利用してデータの取得や登録を行います。
(ちょっとパラメータが過剰すぎやしないかな・・・パスワード変更したらAPIを書き換えないといけないって疎結合してる意味が無い。)
さてこれら情報を取得したら、AccessToken取ってみましょう。
ここでなんと、APIリファレンスにAPIのドメインが記載されていません。これは問い合わせをするしか知る方法はありませんでした。
公開しても良い情報とのことでしたのでAPIのドメインは
https://api.directcloud.jp
です。なのでAccessTokenを取得するには
https://api.directcloud.jp/openapi/jauth/token
に対してパラメータ
"service": service,
"service_key": service_key,
"code": code,
"id": id,
"password": password,
を送信すれば取得できるようです。
その他APIの取得
AccessTokenを取得したら他のAPIはAccessTokenをヘッダーに付けてAPIを叩くだけでした。
この辺りは非常にシンプルなのでソースコードもきれいに書けたと思います。
作ったpythonモジュール
gihubに公開しています。
使い方
使い方は単純でcloneした後、pythonの環境が整ってあれば、.envを作成して
pip install -r requirements.txt
python index.py
すればいい感じに動くと思います。
.env設定内容
.envの中身はこんな感じで作成します。
※SERVICE、SERVICE_KEYは管理者用APIを使いたかったら設定して下さい。
SERVICE="pddlhm*******"
SERVICE_KEY="9f1cee41*****************************"
USER_SERVICE="pddl****"
USER_SERVICE_KEY="b2595***************"
COMPANY_CODE="pdd*****"
USER_ID="bdm*****"
PASSWORD="*******"
実際に動作させたいくつかの情報
フリーの猫動画をアップロードして、ダウンロードリンクの作成を行ってみました。
from direct_cloud_box.api import directCloudBox
import os
from os.path import join, dirname
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)
USER_SERVICE = os.environ.get("SERVICE")
USER_SERVICE_KEY = os.environ.get("SERVICE_KEY")
COMPANY_CODE = os.environ.get("COMPANY_CODE")
USER_ID = os.environ.get("USER_ID")
PASSWORD = os.environ.get("PASSWORD")
user_api = directCloudBox(
USER_SERVICE,
USER_SERVICE_KEY,
COMPANY_CODE,
USER_ID,
PASSWORD
)
try:
print(user_api.fileUpload("./sample_file/sample_movie.mp4", "1"))
print(user_api.fileGet("1"))
print(user_api.fileDownloadUrl("1", "285389469"))
finally:
user_api.tokenExpire()
これで猫動画が見れましたね。にゃー。
他にAPIからはパスワード付きシェアURLや、アップロード可能フォルダの共有、あとプレビュー表示URLなんかも
APIから作れるようですが、なぜかAPIがすべてエラーが返却されます。
ちょっと一人では解決できなさそうなので、今回はここまで。