LoginSignup
1
0

More than 5 years have passed since last update.

[Ruby][gem] togglv8で認証に失敗したら

Last updated at Posted at 2017-09-29

業務都合で自分がある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がリリースされてなかったんですね。

以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0