WSH JScript による XMLHTTPRequest で更新日取得

lambda が渡せるので、とても楽しい…!

function check(url, out)
{
  var bf2wk = new Date(new Date() - (14 * 24 * 60 * 60 * 1000));
  var req = new ActiveXObject("Msxml2.XMLHTTP");

  req.onreadystatechange = function()
  { switch(req.readyState) {
    case 0: break; // uninitialized
    case 1: break; // loading
    case 2: break; // loaded
    case 3: break; // interactive
    case 4: out("status: " + req.status
+ "\nlast-modified:" + req.getresponseheader("last-modified")
+ "\n---\nheader:\n" + req.getAllResponseHeaders()
+ "\n---\nbody:\n" + req.responseText); break;
} }
  req.open("HEAD", url, true);
  req.setrequestheader("Content-Type", "text/xml;charset=UTF-8");
  req.setrequestheader("If-Modified-Since", bf2wk);
  req.send(null);

  // req.open 三番目引数で async を有効にしているため、同期用に関数を返す
  return function() { return req.readystate == 4; };
}

var done = check(
  "http://www.ijg.org/index.html", // 更新日チェックする URL
  function(str) { WScript.echo(str); }); // 表示用オブジェクトを関数として渡す

while(!done()) WScript.sleep(10); // 結果を待ち合わせる
WScript.quit();

多数のチェック用リクエストオブジェクトを作って配列に格納し、これらを待ち合わせる select もしくは join なる名前の関数をつくって…とか、わくわくするよね!ね?