OAuth gate の動きを少々修正しました。
いや、修正したと言っても、まだ作ってませんが。
さて……。
Basic 認証で動く Bot と同じパソコンの中で動いて、OAuth 認証にして Twitter に投げるという発想で。
もともとが安易な性格なので
・Windows で動いて
・Bot のみ対応
・そもそも、POST のみ対応
・一回ごとに(認証だけではなく)接続と、切断を行うBotのみ対応
というパターですが。
こんなのでできるのかな?
とりあえず、○つけたのは、コードを書いたつもり。
○ 1)[SYSTEM] port の値(デフォルトは 80)で、サーバーとして待機する
○ 2)クライアントからの接続要求を受け入れる
○ 3)クライアントから切断が要求されたら、接続を切断する(自動)
× ・その際、Twitter 側に接続中であれば、その接続を切断する
○ 4)接続完了後、クライアントからのデータを受信する
○ 5)クライアントからのデータは CRLF で1行ごとに区切る
○ 6)2個の空行(CRLF のみの行)を受信したら、次の処理に移行する
○ 7)最初の空行の直前までをヘッダとする。
○ 6)最初の空行の次の行をボディとする(ボディは1行のみ)
○ ・以上の結果を、Memo_server_recv に順次書き込む
8)ヘッダの処理
○ ・POST で始まり、.json を含む行 → POST http://api.twitter.com/1/statuses/update.json HTTP/1.1 に差し替える
○ ・POST で始まり、.json を「含まない」行 → POST http://api.twitter.com/1/statuses/update.xml HTTP/1.1 に差し替える
○ ・Authorization: で始まる行
× Basic 以降、行末までの文字列を取得する
× 文頭・文末のスペースをトリミングする
× 得られた文字列のハッシュを算出する(MD5)
× 算出されたハッシュが、[USER] ID_Pass と一致することを確認する
× ・一致しない場合、Twitter 側への送信は行わない
× クライアントへは、とりあえず、エラーの旨を返す。
○ OAuth ヘッダを算出し、これに差し替える
○ ・Host: で始まる行 → Host: api.twitter.com に差し替える
○ ・その他の行 → そのまま
× ・POST で始まる行、Authorization: で始まる行のいずれかが存在しない場合、Twitter 側への送信は行わない
クライアントへは、とりあえず、エラーの旨を返す。
○ ・以上の変換処理(そのままの行を含む)結果を、Memo_twitter_send に順次書き込む
9)ボディの処理
○ ・ボディの内容を、そのまま、Memo_twitter_send に書き込む
× 10)api.twitter.com に接続要求を行う
× 11)接続を待つ → 60秒以内に接続できないとき、Memo_twitter_recv に、「接続エラー」を書き込み、サーバーとしての接続を遮断する
× 12)api.twitter.com に対して、Memo_twitter_send の内容を順次送信する
× 13)api.twitter.com に対して、読み込みを行い、読み込み内容を、Memo_twitter_recv に順次書き込むとともに、クライアントに送信する
× 14)受信終了文字列を受信したら( とか)Twitter への接続を切断する
○ 15)クライアントからの切断要求を受けて、接続を切断する。(3)と同じ
2010年06月10日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/38855781
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/38855781
この記事へのトラックバック
