Evernote API - Ruby sample

fumi · February 8, 2009

Evernote APIのライブラリとサンプルはAPIのページからダウンロード可能です.サンプルはJava,Perl,PHP,Python,Rubyが用意されています.Rubyのサンプルはsample/ruby/EDAMTest.rbです.まず,EDAMTest.rbの13-16行目を,取得したAPI key,secret,開発サーバのユーザ名,パスワードで置き換えます.

consumerKey = "your-api-key-here!"
consumerSecret = "your-api-secret-here!"
username = "your-username"
password = "your-password"

次に,EDAMTest.rbの先頭にEvernote APIのライブラリのパスを追加します.

$:.unshift("../../lib/ruby/")

ライブラリにはバグがあるので以下のパッチを当てます.thriftのほうを直すべきだと思いますが,とりあえず動かすために.

--- lib/ruby/thrift/struct.rb.orig      2009-02-07 17:07:30.000000000 +0900
+++ lib/ruby/thrift/struct.rb   2009-02-08 09:40:56.000000000 +0900
@@ -97,11 +97,11 @@
         end
         iprot.read_struct_end
       end
-      validate
+#      validate
     end

     def write(oprot)
-      validate
+#      validate
         if oprot.respond_to?(:encode_binary)
       # TODO(kevinclark): Clean this so I don't have to access the transport.
         oprot.trans.write oprot.encode_binary(self)
--- lib/ruby/thrift/transport/httpclient.rb.orig        2009-02-08 09:46:12.000000000 +0900
+++ lib/ruby/thrift/transport/httpclient.rb     2009-02-08 09:46:53.000000000 +0900
@@ -19,6 +19,7 @@
     def flush
       http = Net::HTTP.new @url.host, @url.port
       http.use_ssl = @url.scheme == "https"
+      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
       headers = { 'Content-Type' => 'application/x-thrift' }
       resp, data = http.post(@url.path, @outbuf, headers)
       @inbuf = StringIO.new data

後は,残りの必要なライブラリをインストールします.Ubuntu8.10だと以下のように入力します.

$ sudo aptitude install libreadline-ruby libhttp-access2-ruby

ここまで設定すれば,ruby EDAMTest.rbと入力することでサンプルプログラムが起動すると思います. 入力した文章を新しいノートとして取り込むという単純なプログラムです.

Twitter, Facebook