(ruby)(HTTPClientで wgetもどきを作ってみた)

 まぁ あくまで ruby ないし rubygemsの勉強ということで
非常に簡単なプログラムを作ってみることにしてみました

 今回は rubygems の HTTPClientを利用して
HTTPでファイルをダウンロードする ミニプログラムを作ってみます
要は wgetの超超超簡易版ですね 笑)

 HTTPClientのインストールは コマンドプロンプト
gem install httpclient
と実行するだけです

 今回作ってみるツールの コマンドライン引数に必要な要素としては
第1引数:httpのアドレス
第2引数:書き出すファイル名
第3引数:バイナリモードかどうか
という事になりますよね
バイナリモードかどうかの必要性としては
圧縮ファイルや画像ファイルや実行ファイルのような バイナリファイルは
バイナリモードで書き出さないと不具合が生じますしね

 ということで 実際に コーディングしてみると
#!ruby -Ks
require 'httpclient'

if (ARGV[0] == nil)
  puts("htmlのアドレスを指定してください")
  exit(1)
end
if (ARGV[1] == nil)
  puts("出力ファイルを指定してください")
  exit(1)
end
if (ARGV[2] == "b")
  accessmode = "wb"
else
  accessmode = 'w'
end

hc = HTTPClient.new

f = File.open(ARGV[1], accessmode)
f.print(hc.get_content(ARGV[0]))
f.close
 あくまで 勉強のためですし 細かな エラー処理は不完全です
例えば、 不正なアドレスを指定した場合は
サイズ0のゴミファイルが残ってしまったりします

 第3引数に関しては バイナリモードじゃなければ 省略します
バイナリモードの場合だけに 第3引数に 「b」と書くだけですね

 使用例
gethttp.rb http://d.hatena.ne.jp/images/diary/m/morakana/titleimg.jpg d:\get.jpg b
このブログのバナー を d:\get.jpg に保存します