http_request.rb 1.1 → 1.1.1
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 +9 -6
- data/README.rdoc +1 -1
- data/lib/http_request.rb +12 -10
- data/test/test_http_request.rb +6 -0
- metadata +2 -2
data/Changelog
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
v1.1.1
|
2
|
+
* using String#each_line instead of String#each, because ruby 1.9 doesn't have the method String#each
|
3
|
+
|
1
4
|
v1.1
|
2
5
|
* added some testing with test/spec
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
+
* fixed some bugs such as uploading files, combine parameters and query string etc.
|
7
|
+
* supported the HTTP Digest Authentication
|
8
|
+
* refactoring code...
|
6
9
|
|
7
10
|
v1.0.7
|
8
11
|
* bug fixing for the ':ajax' and ':xhr' directive
|
@@ -15,16 +18,16 @@ v1.0.5
|
|
15
18
|
|
16
19
|
v1.0.4
|
17
20
|
* support gzipped content only if the zlib library is loaded
|
18
|
-
|
21
|
+
* post xml data via the POST method
|
19
22
|
|
20
23
|
v1.0.3
|
21
24
|
* add some dynamic methods such as code_1xx?, code_200?, code_403? etc. for check the http status
|
22
25
|
* decompressing gzipped body automatically, the 'Accept-Encoding: gzip,deflate' has been added into the header for sending request automatically.
|
23
|
-
|
26
|
+
* fixed retrieve cookies problem which is if a cookie name is a keyword of the cookie's info such as path, expire etc. then it doesn't work.
|
24
27
|
|
25
28
|
v1.0.2
|
26
29
|
* Proc.call (block) style supported and some small changes
|
27
|
-
|
30
|
+
* improve ftp protocol and add a new method get_as_string for the ftp calls
|
28
31
|
|
29
32
|
v1.0.1
|
30
33
|
* new feature: upload or download files by ftp
|
data/README.rdoc
CHANGED
data/lib/http_request.rb
CHANGED
@@ -11,9 +11,9 @@
|
|
11
11
|
#
|
12
12
|
# == Version
|
13
13
|
#
|
14
|
-
# v1.1
|
14
|
+
# v1.1.1
|
15
15
|
#
|
16
|
-
# Last Change:
|
16
|
+
# Last Change: 15 Oct, 2009
|
17
17
|
#
|
18
18
|
# == Author
|
19
19
|
#
|
@@ -32,7 +32,7 @@ class HttpRequest
|
|
32
32
|
include Singleton
|
33
33
|
class << self
|
34
34
|
# version
|
35
|
-
VERSION = '1.1'.freeze
|
35
|
+
VERSION = '1.1.1'.freeze
|
36
36
|
def version;VERSION;end
|
37
37
|
|
38
38
|
# avaiabled http methods
|
@@ -49,7 +49,7 @@ class HttpRequest
|
|
49
49
|
# update cookies
|
50
50
|
def update_cookies(response)
|
51
51
|
return unless response.header['set-cookie']
|
52
|
-
response.header['set-cookie'].
|
52
|
+
response.header['set-cookie'].each_line {|k|
|
53
53
|
k, v = k.split(';')[0].split('=')
|
54
54
|
@@__cookies[k] = v
|
55
55
|
}
|
@@ -78,10 +78,10 @@ class HttpRequest
|
|
78
78
|
end
|
79
79
|
|
80
80
|
# send request by some given parameters
|
81
|
-
def request(method,
|
81
|
+
def request(method, options, &block)
|
82
82
|
|
83
83
|
# parse the @options
|
84
|
-
parse_options(method,
|
84
|
+
parse_options(method, options)
|
85
85
|
|
86
86
|
# parse and merge for the options[:parameters]
|
87
87
|
parse_parameters
|
@@ -96,11 +96,13 @@ class HttpRequest
|
|
96
96
|
end
|
97
97
|
|
98
98
|
# catch all available http requests
|
99
|
-
def self.method_missing(method_name,
|
99
|
+
def self.method_missing(method_name, options, &block)
|
100
|
+
# we need to retrieve the cookies from last http response before reset cookies if it's a Net::HTTPResponse
|
101
|
+
options[:cookies] = options[:cookies].cookies if options[:cookies].is_a? Net::HTTPResponse
|
100
102
|
@@__cookies = {}
|
101
103
|
method_name = method_name.to_s.downcase
|
102
104
|
raise NoHttpMethodException, "No such http method can be called: #{method_name}" unless self.http_methods.include?(method_name)
|
103
|
-
self.instance.request(method_name,
|
105
|
+
self.instance.request(method_name, options, &block)
|
104
106
|
end
|
105
107
|
|
106
108
|
# for ftp, no plan to add new features to this method except bug fixing
|
@@ -250,7 +252,7 @@ class HttpRequest
|
|
250
252
|
|
251
253
|
# support gzip
|
252
254
|
begin; require 'zlib'; rescue LoadError; end
|
253
|
-
@headers['Accept-Encoding'] = 'gzip,deflate' if defined? Zlib
|
255
|
+
@headers['Accept-Encoding'] = 'gzip,deflate' if defined? ::Zlib
|
254
256
|
|
255
257
|
# ajax calls?
|
256
258
|
@headers['X_REQUESTED_WITH'] = 'XMLHttpRequest' if @options[:ajax] or @options[:xhr]
|
@@ -428,7 +430,7 @@ module Net
|
|
428
430
|
def body
|
429
431
|
bd = read_body()
|
430
432
|
return bd unless bd
|
431
|
-
if (self['content-encoding'] == 'gzip') and defined?(Zlib)
|
433
|
+
if (self['content-encoding'] == 'gzip') and defined?(::Zlib)
|
432
434
|
::Zlib::GzipReader.new(StringIO.new(bd)).read
|
433
435
|
else
|
434
436
|
bd
|
data/test/test_http_request.rb
CHANGED
@@ -223,6 +223,12 @@ context 'Session && Cookie' do
|
|
223
223
|
h1 = hr.get(:url => URL + "/session", :cookies => h1.cookies)
|
224
224
|
h1.body.should.equal "2"
|
225
225
|
|
226
|
+
h2 = hr.get(URL + "/session")
|
227
|
+
h2.body.should.equal "1"
|
228
|
+
|
229
|
+
h2 = hr.get(:url => URL + "/session", :cookies => h2)
|
230
|
+
h2.body.should.equal "2"
|
231
|
+
|
226
232
|
h = hr.get(URL + "/session/1")
|
227
233
|
h.body.should.equal "/session/1:/session/2"
|
228
234
|
|
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:
|
4
|
+
version: 1.1.1
|
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-10-
|
12
|
+
date: 2009-10-15 00:00:00 +08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|