TwitterからWassrへ完全に移行するための10の方法

Wassrが好きで好きでしょうがない・Twitterなんて二度と見たくない! そんなWassr右翼に

/etc/hostsに

  127.0.0.1 twitter.com

を追加する。

require "socket"

proxy = TCPServer.open(80)
while true
  Thread.start(proxy.accept) do |twitter_client|
    TCPSocket.open("api.wassr.jp", 80) do |wassr|
      buff = ""
      while !(twitter_client.gets =~ /^(\n|\r\n)$/)
        buff << $_
      end
      wassr.write buff.gsub(/Host: twitter.com/, "Host: api.wassr.jp") + "\r\n"
      twitter_client.write toTwittelike(wassr.read)
    end
    twitter_client.close
  end
end

こんな感じで今日からいつものTwitterクライアントで快適Wassr生活(GETだけ)

Twitterrific


Twitter Pod


理想を言えば

WassrTwitterAPIが完全互換だったら良かったけど、少し違うので適当に無理矢理矯正した、きっと来週の今頃にはWassrの中の人が頑張って完全互換になってると思うで、その頃には無用になってるんじゃないか

$KCODE = "utf8"
require "socket"

template1 = <<EOF
  <source>&lt;a href="http://d.hatena.ne.jp/lynmock/20071107/p2"&gt;P3:PeraPeraPrv&lt;/a&gt;</source>
  <truncated>false</truncated>
  <in_reply_to_status_id></in_reply_to_status_id>
  <in_reply_to_user_id></in_reply_to_user_id>
  <favorited></favorited>
EOF

template2 = <<EOF
  <id>12345</id>
  <name>PROFILE_NAME_SAMPLE</name>
  <location>Tokyo, JAPAN</location>
  <description></description>
  <profile_image_url>PROFILE_URL_SAMPLE</profile_image_url>
  <url>http://example.com/</url>
  <protected>false</protected>
  <followers_count>100</followers_count>
EOF

@@reg = [[Regexp.new("<link>[^<]*</link>"), "<created_at>Thu Jul 03 16:01:47 +0000 2008</created_at>"],
         [Regexp.new("epoch>"), "id>"],
         [Regexp.new("<rid>([^<]*)</rid>"), template1],
         [Regexp.new("<user>"), "<user>\n"+template2]]

def toTwittelike(wass)
  head, *body = wass.split(/(\n\n|\r\n\r\n)/)
  temp = []
  body.shift
  body.join("\r\n").split(Regexp.new("</status>","g")).each do |status|
    @@reg.each do |reg|
      status.gsub!(reg[0], reg[1])
    end
    if status =~ /<screen_name>([^<]*)<\/screen_name>/
      name = $1.to_s
      status.gsub!(/PROFILE_URL_SAMPLE/, "http://wassr.jp/user/#{name}/profile_img.png.128.1215043742").gsub!(/PROFILE_NAME_SAMPLE/, name)
    end
    temp << status
  end
  body = temp.join("</status>")
  head = head.gsub(/Content-Length: .*(\n|\r\n)/, "")
  return head + "\r\n\r\n" + body + "\r\n\r\n"
end

proxy = TCPServer.open(80)
while true
  Thread.start(proxy.accept) do |twitter_client|
    TCPSocket.open("api.wassr.jp", 80) do |wassr|
      begin
        buff = ""
        while !(twitter_client.gets =~ /^(\n|\r\n)$/)
          buff << $_
        end
        buff = buff.gsub(/Host: twitter.com/, "Host: api.wassr.jp") + "\r\n"
        wassr.write buff
        twitter_client.write toTwittelike(wassr.read)
      rescue => e
        p e
      end
    end
    twitter_client.close
  end
end

created_atとか超適当、まあとりあえwassr.rbとかで保存して

  sudo ruby wassr.rb

一応

ジョークなので、マジで実行しないように。。