業務都合で自分があるPJに使った工数を集計する必要がありました。
タイムログを取るツールにTogglを使っていたのでTogglが提供してくれているAPIを使って集計するコードを書いたときのメモです。
TogglのAPIドキュメント
RubyのAPIについて
Tom Kane has written a Ruby wrapper for Toggl API v8: https://github.com/kanet77/togglv8
とあったのでtogglv8というGemを使いました。
環境
- ruby 2.4.2p198
- togglv8-1.2.1
認証に失敗
https://github.com/kanet77/togglv8#togglv8api
~/.toggl
というファイルにAPIトークンを記述しておけば認証のときにそれを使ってくれるんですが、実際に使ってみると認証が失敗してました。
対策
書き捨てのスクリプトだったのもあって、オープンクラスしてモンキーパッチをあてました(^^;)
ソースを追ってみるとTogglV8::Connection
というクラスのself.open
メソッドを
def self.open(username=nil, password=API_TOKEN, url=nil, opts={})
raise 'Missing URL' if url.nil?
Faraday.new(:url => url, :ssl => {:verify => true}) do |faraday|
faraday.request :url_encoded
faraday.response :logger, Logger.new('faraday.log') if opts[:log]
faraday.adapter Faraday.default_adapter
faraday.headers = { "Content-Type" => "application/json" }
- faraday.basic_auth username, password
+ faraday.basic_auth username.chomp, password
end
end
のように書き換えると動作しました。
ファイルから読み込んだときの末尾の改行文字が消えてないみたいでした。
PR
https://github.com/kanet77/togglv8/pull/22
出してみました。
出してみたものの、既に別のPRで解決されてました。。。
https://github.com/kanet77/togglv8/pull/21
まだ上記が含まれたGemがリリースされてなかったんですね。
以上です。