昨日(id:takatoh:20070502:hatenagraph)のスクリプトを PRagger のプラグインにした。
受け取ったデータの最初の数値だけをポストする。
## Post data to Hatena Graph ## ## - module: publish::hatena_graph ## config: ## user_id: your hatena user id ## password: your password ## graph_name: the name of graph begin require 'rubygems' rescue LoadError end require 'hatena/api/graph' # bug fix and extention for hatenaapigraph 0.1.0 # module ::Hatena module API class Graph def post(graphname, date, value) value = value.to_f date = date.strftime DATE_FORMAT headers = { 'Access' => 'application/x.atom+xml, application/xml, text /xml, */*', 'X-WSSE' => wsse(@username, @password), } params = { :graphname => graphname, :date => date, :value => value, } res = http_post GRAPH_API_URI, params, headers raise GraphError.new("request not successed: #{res}") if res .code != '201' res end private def http_post(url, params, headers) req = ::Net::HTTP::Post.new(url.path, headers) req.form_data = params req.basic_auth url.user, url.password if url.user proxy_host = nil proxy_port = nil if proxy = ENV['http_proxy'] proxy = URI.parse(proxy) proxy_host = proxy.host proxy_port = proxy.port end ::Net::HTTP.new(url.host, url.port, proxy_host, proxy_port). start {|http| http.request(req) } end end end end def hatena_graph(config, data) value = data.first.to_f graph = Hatena::API::Graph.new(config['user_id'], config['password ']) graph.post(config['graph_name'], Time.now, value) end
設定ファイル。データはコマンドラインで指定。
- module: args - module: publish::hatena_graph config: user_id: takatoh password: xxxxxxxx graph_name: "読んだページ数"