]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/core/utils/httputil.rb
remove whitespace
[user/henk/code/ruby/rbot.git] / lib / rbot / core / utils / httputil.rb
index 8272057a09f5638ae32e9c4bdb8b6f0fb8a829ee..4ea83104ccc51a4d86a1cff0f89afd2995893725 100644 (file)
@@ -99,7 +99,7 @@ module ::Net
         end
       when 'deflate'
         debug "inflating body"
-        # From http://www.koders.com/ruby/fid927B4382397E5115AC0ABE21181AB5C1CBDD5C17.aspx?s=thread: 
+        # From http://www.koders.com/ruby/fid927B4382397E5115AC0ABE21181AB5C1CBDD5C17.aspx?s=thread:
         # -MAX_WBITS stops zlib from looking for a zlib header
         inflater = Zlib::Inflate.new(-Zlib::MAX_WBITS)
         begin
@@ -482,6 +482,14 @@ class HttpUtil
   #
   def get_response(uri_or_s, options = {}, &block) # :yields: resp
     uri = uri_or_s.kind_of?(URI) ? uri_or_s : URI.parse(uri_or_s.to_s)
+    unless URI::HTTP === uri
+      if uri.scheme
+        raise "#{uri.scheme.inspect} URI scheme is not supported"
+      else
+        raise "don't know what to do with #{uri.to_s.inspect}"
+      end
+    end
+
     opts = {
       :max_redir => @bot.config['http.max_redir'],
       :yield => :final,
@@ -490,7 +498,6 @@ class HttpUtil
     }.merge(options)
 
     resp = nil
-    cached = nil
 
     req_class = case opts[:method].to_s.downcase.intern
                 when :head, :"net::http::head"
@@ -524,7 +531,9 @@ class HttpUtil
 
     debug "get_response(#{uri}, #{opts.inspect})"
 
-    if opts[:cache] && cached = @cache[cache_key]
+    cached = @cache[cache_key]
+
+    if opts[:cache] && cached
       debug "got cached"
       if !cached.expired?
         debug "using cached"
@@ -537,7 +546,10 @@ class HttpUtil
     headers['Range'] = opts[:range] if opts[:range]
     headers['Authorization'] = opts[:auth_head] if opts[:auth_head]
 
-    cached.setup_headers(headers) if cached && (req_class == Net::HTTP::Get)
+    if opts[:cache] && cached && (req_class == Net::HTTP::Get)
+      cached.setup_headers headers
+    end
+
     req = req_class.new(uri.request_uri, headers)
     if uri.user && uri.password
       req.basic_auth(uri.user, uri.password)
@@ -547,22 +559,23 @@ class HttpUtil
     debug "prepared request: #{req.to_hash.inspect}"
 
     begin
-    get_proxy(uri, opts).start do |http|
-      http.request(req) do |resp|
-        resp['x-rbot-location'] = uri.to_s
-        if Net::HTTPNotModified === resp
-          debug "not modified"
-          begin
-            cached.revalidate(resp)
-          rescue Exception => e
-            error e
+      get_proxy(uri, opts).start do |http|
+        http.request(req) do |resp|
+          resp['x-rbot-location'] = uri.to_s
+          if Net::HTTPNotModified === resp
+            debug "not modified"
+            begin
+              cached.revalidate(resp)
+            rescue Exception => e
+              error e
+            end
+            debug "reusing cached"
+            resp = cached.response
+          elsif Net::HTTPServerError === resp || Net::HTTPClientError === resp
+            debug "http error, deleting cached obj" if cached
+            @cache.delete(cache_key)
           end
-          debug "reusing cached"
-          resp = cached.response
-        elsif Net::HTTPServerError === resp || Net::HTTPClientError === resp
-          debug "http error, deleting cached obj" if cached
-          @cache.delete(cache_key)
-        elsif opts[:cache]
+
           begin
             return handle_response(uri, resp, opts, &block)
           ensure
@@ -571,11 +584,8 @@ class HttpUtil
               @cache[cache_key] = cached
             end
           end
-          return ret
         end
-        return handle_response(uri, resp, opts, &block)
       end
-    end
     rescue Exception => e
       error e
       raise e.message