awk で BASIC 認証
PythonでBASIC認証 - みずぴー日記からですが、awk で BASIC 認証を行ってみます。 実は既にAWK Users JP :: 実用! awk でコマンドラインで Twitter 受信で使っているのですが、紹介しているスクリプトが複雑なので、BASIC 認証のみを抜き出しておきます。
さて、awk での BASIC 認証は他の LL と比較すると複雑と感じる方もいるかもしれませんが、BASIC 認証のやりとりのとおりに記述すれば良いだけです。
#! /usr/bin/gawk -f
# basic_auth.awk
BEGIN {
atom_url = "http://twitter.com/statuses/friends_timeline.atom";
twitter_id = "*****";
twitter_pass = "*****";
# base64 形式に変換する
http_url = "/inet/tcp/0/twitter.com/80";
base64_exec = "echo -n " twitter_id ":" twitter_pass "| base64";
base64_exec | getline mail_pass;
# BASIC 認証部分
ORS = "\r\n";
print "GET " atom_url " HTTP/1.0" |& http_url;
print "Authorization: Basic " mail_pass |& http_url;
print "" |& http_url;
while ((http_url |& getline) > 0) {
print $0;
}
close(http_url);
}
実行してみると読めるか読めないかは別として Twitter の atom が出力されます。 もちろん、上の twitter_id と twitter_pass は自分のものに変更してください。
$ gawk -f basic_auth.awk
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
<title>Twitter / hi_saito with friends</title>
<id>tag:twitter.com,2007:Status</id>
<link type="text/html" rel="alternate" href="http://twitter.com/hi_saito/with_friends"/>
<link type="application/atom+xml" rel="self" href="http://web077.twitter.com/statuses/friends_timeline.atom"/>
<updated>2009-04-29T14:06:24+00:00</updated>
<subtitle>Twitter updates from Hirofumi Saito / hi_saito and folks.</subtitle>
<entry>
<title>saiha_kiryu: @osada snow gooseなうんたん!</title>
<content type="html">saiha_kiryu: @osada snow gooseなうんたん!</content>
<id>tag:twitter.com,2007:http://twitter.com/saiha_kiryu/statuses/1649010335</id>
<snip>
gawk で簡単に BASIC 認証を使った通信ができるのは便利なのですが、awk らしくないという意見も少なくないような気がします。


