Microsoft To-Do のタスクをGolangで取得してみる
前回の記事で、Microsoft To-Doのタスクをcurlで取得してみました。
Microsoft To-Do のタスクをAPIで取得してみる - ソースコードから理解する技術-UnderSourceCode
今回はGolangでタスクを取得するコンソールアプリを作ってみました。
ビルドしてバイナリを起動すると、10秒ごとにタスクを取得し、以下のようにターミナルに出力します。
※今回もベータ版のAPIをコールしています。なので仕様変更などあったら動かなくなるかもしれません。
token unauthorized. print tasks status, name... completed : タスク名 notStarted : タスク名 print tasks status, name... completed : タスク名 notStarted : タスク名
以下、このアプリの作成手順についてです。
実行環境はWindows 10 になります。(多分他のOSでも動くとは思いますが・・・)
プログラムの作成
今回作成したプログラムは以下になります。
https://github.com/SrcHndWng/ms-todo-sample
詳細な実装はプログラムを見てほしいのですが、流れを簡単に説明すると
1. 環境変数よりアクセストークン、リフレッシュトークンを取得する
2. アクセストークンを使ってAPIを叩いてタスクを取得する
3. 2.のレスポンスのステータスコードがUnAuthorized(401)だった場合、リフレッシュトークンを使って新しいアクセストークン、リフレッシュトークンを取得する
4. 3. で取得したトークンを環境変数に設定する
5. 新しいアクセストークンを使ってタスクを再度取得する
6. 取得したタスクをターミナルに出力する
となり、これを10秒ごとに繰り返しています。
(Ctrl + Cなどでの停止処理は今回は実装していません)
この流れがmain()に実装されています。
ちなみに、今回APIからの戻り値のJSONからGolangのstructを作成するのに、以下のサイトを使いました。
非常に使いやすく、助かりました。
https://mholt.github.io/json-to-go/