simplehttp 0.1.0 → 0.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/AUTHORS +1 -0
- data/CHANGELOG +5 -0
- data/README +24 -2
- data/Rakefile +1 -1
- data/lib/simple_http.rb +13 -2
- data/test/http_test.rb +16 -2
- data/test/http_test_server.rb +6 -0
- metadata +2 -2
data/AUTHORS
CHANGED
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -1,10 +1,30 @@
|
|
1
|
-
SimpleHttp - a simplified wrapper around Net::Http
|
1
|
+
= SimpleHttp - a simplified wrapper around Net::Http
|
2
2
|
|
3
3
|
SimpleHttp aims to reduce the complexity of Net::Http while providing
|
4
4
|
the most commonly used (by me) http functionality.
|
5
5
|
|
6
|
+
INSTALLATION
|
7
|
+
|
8
|
+
* Using +gem+
|
9
|
+
|
10
|
+
gem install simple_http
|
11
|
+
|
12
|
+
* Using +setup.rb+
|
13
|
+
|
14
|
+
ruby setup.rb config
|
15
|
+
ruby setup.rb install
|
16
|
+
|
17
|
+
* tarball and zip packages are available from
|
18
|
+
RubyForge[http://rubyforge.org/projects/simplehttp/]
|
19
|
+
|
20
|
+
|
21
|
+
|
6
22
|
FEATURES / USAGE
|
7
23
|
|
24
|
+
* Require the lib:
|
25
|
+
|
26
|
+
require 'simple_http'
|
27
|
+
|
8
28
|
* No fuss one line GET and POST requests:
|
9
29
|
|
10
30
|
str = SimpleHttp.get "http://www.example.com"
|
@@ -40,7 +60,9 @@ FEATURES / USAGE
|
|
40
60
|
|
41
61
|
* Access headers of the request or response
|
42
62
|
http = SimpleHttp.new "www.example.com"
|
43
|
-
http.
|
63
|
+
http.request_headers["X-Custom-Header"]="useful header"
|
64
|
+
http.get
|
65
|
+
puts "server set cookie: #{http.response_headers['set-cookie']}"
|
44
66
|
|
45
67
|
* Automatically follows Http Redirects.
|
46
68
|
|
data/Rakefile
CHANGED
@@ -98,7 +98,7 @@ RubyForgeUser="a2800276"
|
|
98
98
|
RubyForgeProject=PROJECT_NAME
|
99
99
|
|
100
100
|
desc "Upload the web pages to the web."
|
101
|
-
task :upload_pages => ["
|
101
|
+
task :upload_pages => ["clean", :rdoc] do
|
102
102
|
if RubyForgeProject then
|
103
103
|
path = "/var/www/gforge-projects/#{RubyForgeProject}"
|
104
104
|
sh "scp -r doc/html/* #{RubyForgeUser}@rubyforge.org:#{path}"
|
data/lib/simple_http.rb
CHANGED
@@ -42,15 +42,21 @@ require 'base64'
|
|
42
42
|
# sh.get
|
43
43
|
class SimpleHttp
|
44
44
|
|
45
|
-
VERSION='0.1.
|
45
|
+
VERSION='0.1.1'
|
46
46
|
|
47
|
-
attr_accessor :proxy_host, :proxy_port, :proxy_user, :proxy_pwd, :uri, :request_headers, :response_handlers, :follow_num_redirects
|
47
|
+
attr_accessor :proxy_host, :proxy_port, :proxy_user, :proxy_pwd, :uri, :request_headers, :response_headers, :response_handlers, :follow_num_redirects
|
48
48
|
|
49
49
|
RESPONSE_HANDLERS = {
|
50
50
|
Net::HTTPResponse => lambda { |request, response, http|
|
51
|
+
response.each_header {|key, value|
|
52
|
+
http.response_headers[key]=value
|
53
|
+
}
|
51
54
|
raise response.to_s
|
52
55
|
},
|
53
56
|
Net::HTTPSuccess => lambda { |request, response, http|
|
57
|
+
response.each_header {|key, value|
|
58
|
+
http.response_headers[key]=value
|
59
|
+
}
|
54
60
|
return response.body
|
55
61
|
},
|
56
62
|
Net::HTTPRedirection => lambda { |request, response, http|
|
@@ -66,6 +72,10 @@ class SimpleHttp
|
|
66
72
|
# request in case they were non standard.
|
67
73
|
sh.response_handlers = http.response_handlers
|
68
74
|
|
75
|
+
# copy the request headers
|
76
|
+
sh.request_headers=http.request_headers
|
77
|
+
sh.response_headers=http.response_headers
|
78
|
+
|
69
79
|
# http doesn't permit redirects for methods
|
70
80
|
# other than GET of HEAD, so we complain in case
|
71
81
|
# we get them in response to a POST request. (Or
|
@@ -110,6 +120,7 @@ class SimpleHttp
|
|
110
120
|
|
111
121
|
|
112
122
|
@request_headers={}
|
123
|
+
@response_headers={}
|
113
124
|
@response_handlers=RESPONSE_HANDLERS.clone
|
114
125
|
@follow_num_redirects=3
|
115
126
|
|
data/test/http_test.rb
CHANGED
@@ -48,6 +48,7 @@ class SimpleHttpTest < Test::Unit::TestCase
|
|
48
48
|
ret = SimpleHttp.get uri, "query" => "query_test"
|
49
49
|
assert_equal("query_test", ret, "basic GET (query) 4.1 test failed.");
|
50
50
|
|
51
|
+
|
51
52
|
end
|
52
53
|
|
53
54
|
# Tests for http GET calls implemented using instantiated SimpleHttp objects.
|
@@ -69,13 +70,26 @@ class SimpleHttpTest < Test::Unit::TestCase
|
|
69
70
|
ret = http.get "query2" => "query_test"
|
70
71
|
assert_equal("query_test", ret, "basic GET (query) 3 test failed.")
|
71
72
|
|
72
|
-
# GET
|
73
|
+
# GET request with a custom request_header
|
73
74
|
http = SimpleHttp.new "http://127.0.0.1:12345/header_test"
|
74
75
|
http.request_headers= {'x-special-http-header'=>'my-value'}
|
75
76
|
ret = http.get
|
76
77
|
assert_equal("my-value", ret, "GET header test 4")
|
77
78
|
|
78
|
-
|
79
|
+
# GET test with custom response_headers
|
80
|
+
http = SimpleHttp.new "http://127.0.0.1:12345/header_test"
|
81
|
+
http.request_headers= {'x-special-http-header'=>'resp-header-test'}
|
82
|
+
http.get
|
83
|
+
assert_equal("resp-header-test", http.response_headers['x-special-response'], "GET response header test 5")
|
84
|
+
|
85
|
+
# GET test with custom request & response header and redirect
|
86
|
+
# test that request headers we set remain intact during redirects.
|
87
|
+
|
88
|
+
http = SimpleHttp.new "http://127.0.0.1:12345/redirect_special_header"
|
89
|
+
http.request_headers["x-special-http-header"]='redirect_test'
|
90
|
+
http.get
|
91
|
+
assert_equal("redirect_test", http.response_headers['x-special-response'], "GET response header redirect test. 6")
|
92
|
+
|
79
93
|
end
|
80
94
|
|
81
95
|
# http POST calls using class methods.
|
data/test/http_test_server.rb
CHANGED
@@ -52,6 +52,7 @@ class TestServer
|
|
52
52
|
# return value of request header named "X-Special-Http-Header"
|
53
53
|
@server.mount_proc("/header_test"){|req, res|
|
54
54
|
res.body=req.header["x-special-http-header"][0]
|
55
|
+
res['x-special-response']=req.header["x-special-http-header"][0]
|
55
56
|
}
|
56
57
|
|
57
58
|
# return value of request header named "X-Special-Http-Header"
|
@@ -86,5 +87,10 @@ class TestServer
|
|
86
87
|
res.status=301
|
87
88
|
res.header['location']="http://127.0.0.1:12345/test1"
|
88
89
|
}
|
90
|
+
|
91
|
+
@server.mount_proc("/redirect_special_header") { |req, res|
|
92
|
+
res.status=301
|
93
|
+
res.header['location']="http://127.0.0.1:12345/header_test"
|
94
|
+
}
|
89
95
|
end
|
90
96
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: simplehttp
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2007-02-
|
6
|
+
version: 0.1.1
|
7
|
+
date: 2007-02-09 00:00:00 +01:00
|
8
8
|
summary: "simple_http: Simple Http client lib."
|
9
9
|
require_paths:
|
10
10
|
- lib
|