flickr.rbをプロキシ対応にしたい。

rubyからFlickrをいじるためのラッパー flickr.rb をプロキシに対応させるよう、手をいれる。
環境変数 http_proxy が設定されているときは、強制的にプロキシ経由になる。

flickr.rbは↓から。
http://redgreenblu.com/flickr/
手をいれたものはflickr-proxy.rbという名称にして、

diff -Naru flickr.rb flickr-proxy.rb

としたもの。

--- flickr.rb	2005-07-06 20:40:42.230064000 +0900
+++ flickr-proxy.rb	2005-07-06 20:34:58.265467200 +0900
@@ -48,6 +48,11 @@
 require 'net/http'
 require 'xmlsimple'
 
+#yf
+Net::HTTP.version_1_2
+
+hoge, $http_proxy_host, $http_proxy_port = /\Ahttp:\/\/([^:\/]+):*(\d+[^\/])*\/*\Z/.match(ENV['http_proxy']).to_a
+
 # Flickr client class. Requires an API key, and optionally takes an email and password for authentication
 class Flickr
 
@@ -79,7 +84,9 @@
   
   # Does an HTTP GET on a given URL and returns the response body
   def http_get(url)
-    Net::HTTP.get_response(URI.parse(url)).body.to_s
+#yf
+#    Net::HTTP.get_response(URI.parse(url)).body.to_s
+    Net::HTTP::Proxy($http_proxy_host, $http_proxy_port.to_i).get_response(URI.parse(url)).body.to_s
   end
 
   # Stores authentication credentials to use on all subsequent calls.
@@ -319,7 +326,9 @@
 
     # Returns the photo file data itself, in any specified size. Example: File.open(photo.title, 'w') { |f| f.puts photo.file }
     def file(size='Medium')
-      Net::HTTP.get_response(URI.parse(source(size))).body
+#yf
+#      Net::HTTP.get_response(URI.parse(source(size))).body
+      Net::HTTP::Proxy($http_proxy_host, $http_proxy_port.to_i).get_response(URI.parse(source(size))).body
     end
 
     # Unique filename for the image, based on the Flickr NSID

最初http_proxy_hostとhttp_proxy_portをグローバル変数にしてなくて、はまった。http_proxy_hostというメソッドがないからmissing_methodに戻ってって具合でスタックオーバーフローでした。
一番外で宣言してるからスコープ内だと思ったのに、違うのかなぁ。

グローバル変数ってのも何だから、Flickrクラスのクラス変数あたりにしておいたほうがいいのかな?