LoginSignup
19
19

More than 5 years have passed since last update.

APIのRubyラッパーを作ったときの日記

Last updated at Posted at 2015-03-23

経緯

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に投稿したら
スクリーンショット 2015-03-24 01.58.01.png
とか来てテンションが↑↑になってひたすら開発をした。
めっちゃテンション上がって2時までコード書いてた。

3/24

かなり進捗が生まれた。
spec.add_dependencyの設定をしていなかったせいで、
穴にハマりかけるも、なんとか脱出。
リスト,タスク,ノート,コメントについてはActiveRecordっぽく生成できるようになりました。
コード書いてたら、いつの間にか20歳になってた…つらい。

使い方

README.md

# 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

参考にさせていただいたサイト

随時更新

19
19
3

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
19
19