経緯
Ruby1年間使ってたけど、よく思ったらRailsに頼りっぱなしじゃない?
もうそろそろ20歳になるし、何か作らないと…
そういえば、最近タスク管理にWunderlistを使い始めた。
せっかくだし自分のタスクをしっかりと管理できるように、
githubのイシューをWunderlistに同期するための
Rubyスクリプトを書こう!!!となりました。
が!!!
Wunderlist APIのRubyラッパーで
まともに動くものがなかった…。
なら自分で作ろう!!!
という流れでWunderlistAPIのRubyラッパを作る事になりました。
成果物
wunderlist-api(ver 0.7.1)
11/25更新
https://github.com/shun3475/wunderlist-api
Rubygems
https://rubygems.org/gems/wunderlist-api
日記
3/21
わからない。
そういえばgemでライブラリ作ったことなかったなー。
何をやればいいのかすらわからない。
とりあえず、
$ bundle gem wunderlist-api -t
って入力したらなんかいろいろファイルできた。
満足して寝た。
3/22
RubyのHTTPクライアントにはFaradayとかいうやつが便利らしい!
GitHubAPIのRubyラッパもFaraday使ってるし、
業務で使ったことあるし、とりあえず使ってみよう。
あれ?でも認証できない?
HTTPリクエストの時に、ヘッダにACCESS_TOKENとCLIENT_IDを
付けなきゃいけない??
ふむふむ。
curl -H 的なことすればいいのかな…?
わからない。
しかし、Faradayの便利さと、気合でACCESS_TOKENを取得!
とりあえずはAPIにアクセスできるようになった。
そして、タスクの取得、作成、リストの取得ができるようになった。
なんかActiveModelみたいにデータ取りたいな…って思い始める。
3/23
クラスのうまい使い方を初めて知る。
Wunderlist::TaskクラスとWunderlist::Taskクラスにsaveメソッドを実装。
ちゃっかり公開してたgemが100ダウンロードを突破!
調子に乗って、Twitterに投稿したら
とか来てテンションが↑↑になってひたすら開発をした。
めっちゃテンション上がって2時までコード書いてた。
3/24
かなり進捗が生まれた。
spec.add_dependencyの設定をしていなかったせいで、
穴にハマりかけるも、なんとか脱出。
リスト,タスク,ノート,コメントについてはActiveRecordっぽく生成できるようになりました。
コード書いてたら、いつの間にか20歳になってた…つらい。
使い方
# You must create API CLIENT at first.
wl = Wunderlist::API.new({
:access_token => <your access token>,
:client_id => <your client id>
})
# You can create Task
task = wl.new_task(LIST_NAME, {:title => 'Hello World', :completed => true, :due_date => '2015-03-25' })
=> #<Wunderlist::Task:0x00000000000>
task.save
# You can delete Task
task.destroy
=> #<Wunderlist::Task:0x00000000000>
task.id
=> nil
# You can get Wunderlist::List Object
list = wl.list(LIST_NAME)
=> #<Wunderlist::List:0x00000000000>
# You can change List name
list.title = "IMOKENPI"
list.save
# You can get Wunderlist::Task Object Wrapped by Array
tasks = list.tasks
=> [#<Wunderlist::Task:0x00000000000>, #<Wunderlist::Task:0x11111111111>, ...]
or
tasks = wl.tasks([LIST_NAME1, LIST_NAME2])
=> [#<Wunderlist::Task:0x00000000000>, #<Wunderlist::Task:0x11111111111>, ...]
# You can create and update note.
note = task.note
=> #<Wunderlist::Note:0x00000000000>
note.content = "Hello World"
note.save
参考にさせていただいたサイト
- mitukiii / faraday.md (https://gist.github.com/mitukiii/2775321)
- 君がOpsでもRubyで書いたライブラリはGemで配ろう(http://qiita.com/sawanoboly/items/ede7715c605e5822ad22)
随時更新