http_request.rb 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Changelog +4 -0
 - data/README.rdoc +14 -0
 - data/lib/http_request.rb +25 -15
 - metadata +2 -2
 
    
        data/Changelog
    CHANGED
    
    | 
         @@ -1,3 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            v1.0.4
         
     | 
| 
      
 2 
     | 
    
         
            +
                * support gzipped content only if the zlib library is loaded
         
     | 
| 
      
 3 
     | 
    
         
            +
            		* post xml data via the POST method
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       1 
5 
     | 
    
         
             
            v1.0.3
         
     | 
| 
       2 
6 
     | 
    
         
             
                * add some dynamic methods such as code_1xx?, code_200?, code_403? etc. for check the http status 
         
     | 
| 
       3 
7 
     | 
    
         
             
                * decompressing gzipped body automatically, the 'Accept-Encoding: gzip,deflate' has been added into the header for sending request automatically.
         
     | 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -205,6 +205,20 @@ download multiple files from a directory 
     | 
|
| 
       205 
205 
     | 
    
         | 
| 
       206 
206 
     | 
    
         
             
               supported methods:  code_1xx? code_2xx? code_3xx? code_4xx? code_5xx? code_101? code_200? ...
         
     | 
| 
       207 
207 
     | 
    
         | 
| 
      
 208 
     | 
    
         
            +
            == check whether or not the remote site is available (since v1.0.3)
         
     | 
| 
      
 209 
     | 
    
         
            +
               
         
     | 
| 
      
 210 
     | 
    
         
            +
               # return true if can access to the website with socket connecation even it is a 500 or 404 page, otherwise, return false
         
     | 
| 
      
 211 
     | 
    
         
            +
               HttpRequest.available?('http://www.github.com/')
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
            == send XML data via the post method (since v1.0.4)
         
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
      
 215 
     | 
    
         
            +
               xml = '<?xml version="1.0" encoding="utf-8" ?>
         
     | 
| 
      
 216 
     | 
    
         
            +
                      <items>
         
     | 
| 
      
 217 
     | 
    
         
            +
                         <item id="it1">item one</item>
         
     | 
| 
      
 218 
     | 
    
         
            +
                         <item id="it2">item two</item>
         
     | 
| 
      
 219 
     | 
    
         
            +
                      </items>'
         
     | 
| 
      
 220 
     | 
    
         
            +
               HttpRequest.post(:url => 'http://localhost/xml.php', :parameters = xml)
         
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
       208 
222 
     | 
    
         
             
            == TODO
         
     | 
| 
       209 
223 
     | 
    
         | 
| 
       210 
224 
     | 
    
         
             
              bug fixing, testing and testing...
         
     | 
    
        data/lib/http_request.rb
    CHANGED
    
    | 
         @@ -11,9 +11,9 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
            #
         
     | 
| 
       12 
12 
     | 
    
         
             
            # == Version
         
     | 
| 
       13 
13 
     | 
    
         
             
            # 
         
     | 
| 
       14 
     | 
    
         
            -
            #   v1.0. 
     | 
| 
      
 14 
     | 
    
         
            +
            #   v1.0.4
         
     | 
| 
       15 
15 
     | 
    
         
             
            #
         
     | 
| 
       16 
     | 
    
         
            -
            #   Last Change:  
     | 
| 
      
 16 
     | 
    
         
            +
            #   Last Change: 9 June, 2009
         
     | 
| 
       17 
17 
     | 
    
         
             
            #
         
     | 
| 
       18 
18 
     | 
    
         
             
            # == Author
         
     | 
| 
       19 
19 
     | 
    
         
             
            #
         
     | 
| 
         @@ -33,7 +33,7 @@ class HttpRequest 
     | 
|
| 
       33 
33 
     | 
    
         
             
            	include Singleton
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
            	# version
         
     | 
| 
       36 
     | 
    
         
            -
            	VERSION = '1.0. 
     | 
| 
      
 36 
     | 
    
         
            +
            	VERSION = '1.0.4'.freeze
         
     | 
| 
       37 
37 
     | 
    
         
             
            	def self.version;VERSION;end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
            	# avaiabled http methods
         
     | 
| 
         @@ -192,11 +192,14 @@ class HttpRequest 
     | 
|
| 
       192 
192 
     | 
    
         
             
            		@uri.path = '/' if @uri.path.empty?
         
     | 
| 
       193 
193 
     | 
    
         
             
            		@headers = {
         
     | 
| 
       194 
194 
     | 
    
         
             
            			'Host'            => @uri.host,
         
     | 
| 
       195 
     | 
    
         
            -
            			'Accept-Encoding' => 'gzip,deflate',
         
     | 
| 
       196 
195 
     | 
    
         
             
            			'Referer'         => @options[:url],
         
     | 
| 
       197 
196 
     | 
    
         
             
            			'User-Agent'      => 'HttpRequest.rb ' + VERSION
         
     | 
| 
       198 
197 
     | 
    
         
             
            		}
         
     | 
| 
       199 
198 
     | 
    
         | 
| 
      
 199 
     | 
    
         
            +
            		# support gzip
         
     | 
| 
      
 200 
     | 
    
         
            +
            		begin; require 'zlib'; rescue LoadError; end
         
     | 
| 
      
 201 
     | 
    
         
            +
            		@headers['Accept-Encoding'] = 'gzip,deflate' if defined? Zlib
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
       200 
203 
     | 
    
         
             
            		# Basic Authenication
         
     | 
| 
       201 
204 
     | 
    
         
             
            		@headers['Authorization'] = "Basic " + [@uri.userinfo].pack('m').delete!("\r\n") if @uri.userinfo
         
     | 
| 
       202 
205 
     | 
    
         | 
| 
         @@ -255,14 +258,21 @@ class HttpRequest 
     | 
|
| 
       255 
258 
     | 
    
         
             
            	# send http request
         
     | 
| 
       256 
259 
     | 
    
         
             
            	def send_request(http)
         
     | 
| 
       257 
260 
     | 
    
         | 
| 
       258 
     | 
    
         
            -
            		#  
     | 
| 
       259 
     | 
    
         
            -
            		parameters  
     | 
| 
       260 
     | 
    
         
            -
             
     | 
| 
       261 
     | 
    
         
            -
             
     | 
| 
       262 
     | 
    
         
            -
            			 
     | 
| 
       263 
     | 
    
         
            -
             
     | 
| 
       264 
     | 
    
         
            -
            			 
     | 
| 
       265 
     | 
    
         
            -
             
     | 
| 
      
 261 
     | 
    
         
            +
            		# xml data?
         
     | 
| 
      
 262 
     | 
    
         
            +
            		if @options[:parameters].to_s[0..4].eql?('<?xml') and @options[:method].eql? 'post'
         
     | 
| 
      
 263 
     | 
    
         
            +
            			@headers['Content-Type'] = 'application/xml'
         
     | 
| 
      
 264 
     | 
    
         
            +
            			@headers['Content-Length'] = @options[:parameters].size.to_s
         
     | 
| 
      
 265 
     | 
    
         
            +
            			@headers['Content-MD5'] = MD5.md5(@options[:parameters]).to_s
         
     | 
| 
      
 266 
     | 
    
         
            +
            		else
         
     | 
| 
      
 267 
     | 
    
         
            +
            			# merge parameters
         
     | 
| 
      
 268 
     | 
    
         
            +
            			parameters = @options[:parameters].to_s
         
     | 
| 
      
 269 
     | 
    
         
            +
            			@options[:parameters] = "#{@uri.query}" if @uri.query
         
     | 
| 
      
 270 
     | 
    
         
            +
            			if parameters
         
     | 
| 
      
 271 
     | 
    
         
            +
            				if @options[:parameters]
         
     | 
| 
      
 272 
     | 
    
         
            +
            					@options[:parameters] << "&#{parameters}"
         
     | 
| 
      
 273 
     | 
    
         
            +
            				else
         
     | 
| 
      
 274 
     | 
    
         
            +
            					@options[:parameters] = "#{parameters}"
         
     | 
| 
      
 275 
     | 
    
         
            +
            				end
         
     | 
| 
       266 
276 
     | 
    
         
             
            			end
         
     | 
| 
       267 
277 
     | 
    
         
             
            		end
         
     | 
| 
       268 
278 
     | 
    
         | 
| 
         @@ -296,10 +306,10 @@ module Net 
     | 
|
| 
       296 
306 
     | 
    
         
             
            		def body
         
     | 
| 
       297 
307 
     | 
    
         
             
            			bd = read_body()
         
     | 
| 
       298 
308 
     | 
    
         
             
            			return bd unless bd
         
     | 
| 
       299 
     | 
    
         
            -
            			 
     | 
| 
       300 
     | 
    
         
            -
            				bd
         
     | 
| 
       301 
     | 
    
         
            -
            			else
         
     | 
| 
      
 309 
     | 
    
         
            +
            			if (self['content-encoding'] == 'gzip') and defined?(Zlib)
         
     | 
| 
       302 
310 
     | 
    
         
             
            				::Zlib::GzipReader.new(StringIO.new(bd)).read
         
     | 
| 
      
 311 
     | 
    
         
            +
            			else
         
     | 
| 
      
 312 
     | 
    
         
            +
            				bd
         
     | 
| 
       303 
313 
     | 
    
         
             
            			end
         
     | 
| 
       304 
314 
     | 
    
         
             
            		end
         
     | 
| 
       305 
315 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: http_request.rb
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.4
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - xianhua.zhou
         
     | 
| 
         @@ -9,7 +9,7 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date: 2009- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2009-06-13 00:00:00 +08:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       15 
15 
     | 
    
         |