以前の作ったshellコマンドをJSON-RPC経由で実行する を利用してHackMD を外部からAPIで操作できるようにしたいと思います。
HackMDにはCLI が提供されていますので、以前つくったJSON-RPCのDockerイメージにこのCLIをインストールして利用してみたいと思います。
HackMD CLIのインストール
以下のように簡単につくりました。
Dockerfile
|
|
Githubのtumf/hackmd-cli-api にもおいてあります。
hackmd-cli-apiのビルドとテスト
ビルド
$ docker build . -t hackmd-cli-api
実行
$ docker run -p 127.0.0.1:8080:8999 hackmd-cli-api
テスト
$ curl -X POST --data-raw '{ "jsonrpc": "2.0", "id": "1", "method": "shell", "params": [ { "command": "hackmd-cli --version" } ]}' http://127.0.0.1:8080
|
|
よさそうですね👍
ログイン
HackMD CLIは環境変数でログイン用のID/PASSWORDを受け付けます。
- HMD_CLI_ID
- HMD_CLI_PASSWORD
これらの値を設定してdockerコマンドに引き渡すことでコンテナに環境変数が設定されます。
$ export HMD_CLI_ID=user@example.com
$ export HMD_CLI_PASSWORD=p@ssw0rd
$ docker run -e HMD_CLI_ID -e HMD_CLI_PASSWORD -p 127.0.0.1:8080:8999 hackmd-cli-api
試してみます
$ curl -X POST --data-raw '{"jsonrpc":"2.0", "id": "1", "method":"shell", "params": [{ "command": "hackmd-cli login" }] }'
|
|
ログインできたようですね。
記事一覧
次にhackmd-cli history
で記事一覧見てみましょう。
$ curl -X POST --data-raw '{"jsonrpc":"2.0", "id": "1", "method":"shell", "params": [{ "command": "hackmd-cli login" }, {"command": "hackmd-cli history"}] }'
都合により結果は書きませんが問題なく実行できました。