[OmniToggl] Toggl V9 API へ対応させました
私が愛してやまない OmniTogglですが、最近、こんな通知が来ました。
いつまで V8 API 使ってるんだ、とっとと V9 にしやがれ、ということです。なんということでしょう。
わたしはこんなにも OmniToggl を使って日々の活動を行っています。
OmniToggl が使えない = 活動の停止を意味します。
そこで私はこのゴールデンウィークに、V8 → V9 へのマイグレーションへと手を付けることにしました。元のプログラムのコアは 3年以上更新がありません。自分で直すしかない。
ここを参考にしながら、久しぶりに他人のプログラムを観察しました。
眺めていて分かったことは次の通りです。
API の URL を変更する
Workspace ID を URL に付与する必要がある
Time Entry する場合の必須項目が違う様子
Stop Entry する場合に PATCH Method へ変更
あまり大きな変更は不要な気がしますが、Workspace の ID をきちんと取得しないとならないことがネックです。それ以上にネックなのが、Omni Automation で開発をしたことがないということです。
JavaScript エンジンは自前で実装しているかのようで、専用のコンソールが準備されています。またここにある API Reference に入っている Class は使えるものの、標準的に使えるライブラリなどはないようです。なるほど、だから 'btoa()' とかわざわざ実装しているのか…。なんか厄介な気がします。
とりあえず、fork して名前を変えて並行実行できるようにしていろいろと試した結果、ゴールデンウィーク前半で修正が完了しました。
しょっさん素晴らしい。
ということで実装コードはここ。
まだ本家には Pull Request してませんけど、とりあえず V9 対応の OmniToggl はここで手に入ります。どうぞ使ってみてください。V9 へ対応させて StopTimeEntry のときにもコンソールに出力するようにしました。それだけの変更です。でも大変だった。
バグってたら教えてね!!!!!!