Feed::mixi
mixiをPraggerで読めるようにする。自分でHTMLを解析するのではなく、mixiツールバー用のAtomを取得するようにしている。
ただ、Atomをパースする方法がよく分からなかったし、特に必要もなかったので、パースせずに文字列のまま渡している。
設定ファイル例
- module: Feed::mixi config: username: username password: password member_id: 1000000 - module: file config: filename: feeds/mixi.atom
ソースコード
Feed/mixi.rb
#! /opt/local/bin/ruby -w # -*- mode:ruby; coding:utf-8 -*- # # mixi.rb - # # Copyright(C) 2008 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2008/02/08 12:16:36 # # This program is free software; you can redistribute it and/or # modify it under MIT Lincence. # require 'openssl' require 'open-uri' require 'base64' def mixi(config,data) wsse = lambda{|username,password| t = Time.now nonce = OpenSSL::Digest::SHA1.digest(OpenSSL::Digest::SHA1.digest(t.to_s + rand.to_s)) now = t.utc.iso8601 digest = Base64.encode64(OpenSSL::Digest::SHA1.digest(nonce+now+config['password'])).chop %(UsernameToken Username="#{username}", PasswordDigest="#{digest}", Nonce="#{Base64.encode64(nonce).chop}", Created="#{now}") } open("http://mixi.jp/atom/updates/member_id=#{config['member_id']}", 'X-WSSE' => wsse.call(config['username'],config['password'])).read end
file.rb
def file(config,data) open(config['filename'],'w'){|io| io.print data.to_s } end