Publish::twitter作りました。

わざわざPraggerで定期実行しながらtwitterで投稿するだろうか?Praggerの実行待つうちに書いちまえよ!と思いながらも、TwitterAPIが簡単だったので作ってみました。
ユーザ名とパスワードを指定すれば渡された配列を順番に投稿します。

最近は企業のPRに使ったりとTwitterも活発みたい。そのかわりよく色んなところが落ちてますが。そのあたりのエラー回避はしてないなぁ。
とりあえず、ソース公開しておきます。


Publish/twitter.rb

# Publish::twitter - twitter poster - Meguu
#
# - module: Publish::twitter
#   config:
#     username: your_username
#     password: your_password
#
require 'net/http'
require 'kconv'

def twitter(config, data)
  Net::HTTP.version_1_2
  Net::HTTP.start('twitter.com', 80) do |http|
    req = Net::HTTP::Post.new('/statuses/update.json')
    req.basic_auth config['username'], config['password']
    data.each do |i|
      status = i.title rescue status = i.to_s
      status = 'status=' + url_encode(status.toutf8)
      response = http.request(req, status)
    end
  end
  data
end

def url_encode(string)
  string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do
    '%' + $1.unpack('H2' * $1.size).join('%').upcase
  end.tr(' ', '+')
end