2009年3月4日 星期三

Google Data on Rails

Google release data service API,
I try to using it create a simple sample.

*******

Ruby是我最近常用的語言
因為工作的需要,使用的算是普遍
不過個人資質愚笨,學的很慢啦
某天下班看到godfat大的PO文,於是就手癢趕快來試試看
順便看看自己能否應用基本的概念
畢竟Google有提供Sample

好的,首先需要安裝gdata
可以透過gem比較快
就是輸入指令gem install gdata

使用OS X請安裝xcode
如果像我辦公室用CentOS,gem裝起來怪怪的
就建議您抓原始zip檔回來,執行裡面的setup.rb
比較沒問題

裝好之後輸入gem list看看
裡面有gdata就成功了


之後就是開始寫程式了,Google提供不少範例
幾個較大的Service像是Youtube都有Sample Code
大致上就是通過驗證,然後Google產生回應
自己簡單的取得回應,基本的目的就達到了

我自己選了一個Google Doc的試試看
用途是列出自己帳號下的所有文件
包含檔名、類型、上傳日期、下載網址
程式碼如下


user= ARGV[0]
pass= ARGV[1]

require 'gdata'
$KCODE = 'UTF8'
if (user="" ||pass="") then
puts "Please enter the user name and password for argv!"

elsif
client = GData::Client::DocList.new
client.clientlogin("#{user}","#{pass}")
feed = client.get('http://docs.google.com/feeds/documents/private/full').to_xml
feed.elements.each('entry') do |entry|
puts 'title: ' + entry.elements['title'].text
puts 'type: ' + entry.elements['category'].attribute('label').value
puts 'updated: ' + entry.elements['updated'].text
puts 'id: ' + entry.elements['id'].text

# Extract the href value from each
links = {}
entry.elements.each('link') do |link|
links[link.attribute('rel').value] = link.attribute('href').value
end

feed = client.get('http://docs.google.com/feeds/documents/private/full').to_xml
feed.elements.each('entry') do |entry|
puts 'title: ' + entry.elements['title'].text
puts 'type: ' + entry.elements['category'].attribute('label').value
puts 'updated: ' + entry.elements['updated'].text
puts 'id: ' + entry.elements['id'].text

# Extract the href value from each
links = {}
entry.elements.each('link') do |link|
links[link.attribute('rel').value] = link.attribute('href').value
end
puts links.to_s
end

end

只是簡單的加入一個檢查機制
對傳入參數的判斷,避免帳號密碼有漏輸入

把程式存成一個*.rb的檔案
輸入指令試試看
ruby *.rb id password


不久就跑出來結果


終端機支援Unicode
可以看到中文檔名喔


非常簡單又沒程度的小試驗
讓大家見笑了

*******

我工作用的CentOS好怪
Gem執行install成功了
但是真正要require時都沒作用勒

希望Google快出AppEngine的Ruby版本

沒有留言: