http_request.rb 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|