jruby-httpclient 1.0.0-java → 1.1.0-java

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/Rakefile CHANGED
@@ -20,7 +20,7 @@ Jeweler::Tasks.new do |gem|
20
20
  gem.summary = %Q{A thin wrapper around the Apache HttpClient}
21
21
  gem.description = %Q{An HTTP client designed for use with JRuby in a threaded environment}
22
22
  gem.email = "adam@esterlines.com"
23
- gem.authors = ["Adam Esterline"]
23
+ gem.authors = ["Adam Esterline", "Aaron Spiegel"]
24
24
  gem.platform = Gem::Platform::JAVA
25
25
  # dependencies defined in Gemfile
26
26
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jruby-httpclient}
8
- s.version = "1.0.0"
8
+ s.version = "1.1.0"
9
9
  s.platform = Gem::Platform.new([nil, "java", nil])
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.authors = ["Adam Esterline"]
13
- s.date = %q{2011-07-10}
12
+ s.authors = ["Adam Esterline", "Aaron Spiegel"]
13
+ s.date = %q{2012-01-01}
14
14
  s.description = %q{An HTTP client designed for use with JRuby in a threaded environment}
15
15
  s.email = %q{adam@esterlines.com}
16
16
  s.extra_rdoc_files = [
@@ -12,6 +12,14 @@ module HTTP
12
12
  def get(params, options = {})
13
13
  read_response(Get.new(params, options))
14
14
  end
15
+
16
+ def head(params, options = {})
17
+ read_response(Head.new(params, options))
18
+ end
19
+
20
+ def options(params, options = {})
21
+ read_response(Options.new(params, options))
22
+ end
15
23
 
16
24
  def post(params, options = {})
17
25
  read_response(Post.new(params, options))
@@ -67,6 +67,20 @@ module HTTP
67
67
  end
68
68
  end
69
69
 
70
+ class Head < Request
71
+ def create_native_request
72
+ query_string = URLEncodedUtils.format(@query_params, encoding)
73
+ HttpHead.new(create_uri(query_string))
74
+ end
75
+ end
76
+
77
+ class Options < Request
78
+ def create_native_request
79
+ query_string = URLEncodedUtils.format(@query_params, encoding)
80
+ HttpOptions.new(create_uri(query_string))
81
+ end
82
+ end
83
+
70
84
  class Delete < Request
71
85
  def create_native_request
72
86
  HttpDelete.new(create_uri)
@@ -81,6 +95,8 @@ module HTTP
81
95
 
82
96
  private
83
97
  HttpGet = org.apache.http.client.methods.HttpGet
98
+ HttpHead = org.apache.http.client.methods.HttpHead
99
+ HttpOptions = org.apache.http.client.methods.HttpOptions
84
100
  HttpPost = org.apache.http.client.methods.HttpPost
85
101
  HttpDelete = org.apache.http.client.methods.HttpDelete
86
102
  HttpPut = org.apache.http.client.methods.HttpPut
@@ -9,7 +9,12 @@ module HTTP
9
9
  end
10
10
 
11
11
  def body
12
- @body ||= EntityUtils.to_string(@native_response.entity)
12
+ # HTTP HEAD requests have no entity, nor any body
13
+ if @native_response.entity
14
+ @body ||= EntityUtils.to_string(@native_response.entity)
15
+ else
16
+ nil
17
+ end
13
18
  end
14
19
 
15
20
  def status_code
@@ -26,7 +31,25 @@ module HTTP
26
31
  end
27
32
 
28
33
  def [](header_name)
29
- @native_response.get_first_header(header_name).value
34
+ @native_response.get_headers(header_name).map{|h| h.get_value}.join(", ")
35
+ end
36
+
37
+ def to_s
38
+ @native_response.get_all_headers.map(&:to_s).join("\n")
39
+ end
40
+
41
+ def to_hash
42
+ hash = {}
43
+ each do |name, value|
44
+ hash[name] = hash[name] ? hash[name] + ", #{value}" : value
45
+ end
46
+ hash
47
+ end
48
+
49
+ def each
50
+ @native_response.header_iterator.each do |h|
51
+ yield h.get_name, h.get_value
52
+ end
30
53
  end
31
54
  end
32
55
 
@@ -59,6 +59,42 @@ module HTTP
59
59
  params_as_hash.map { |name, value| "#{URI.encode(name.to_s)}=#{URI.encode(value.to_s)}" }.join("&")
60
60
  end
61
61
  end
62
+
63
+ class Head < Request
64
+ def create_request
65
+ host, port, path, query = parse_uri
66
+ head = Net::HTTP::Head.new("#{path}?#{query || to_query_string(@params)}")
67
+ [host, port, head]
68
+ end
69
+
70
+ def to_query_string(params_as_hash)
71
+ params_as_hash.map { |name, value| "#{URI.encode(name.to_s)}=#{URI.encode(value.to_s)}" }.join("&")
72
+ end
73
+ end
74
+
75
+ class Options < Request
76
+ def create_request
77
+ host, port, path, query = parse_uri
78
+ options = Net::HTTP::Options.new("#{path}?#{query || to_query_string(@params)}")
79
+ [host, port, options]
80
+ end
81
+
82
+ def to_query_string(params_as_hash)
83
+ params_as_hash.map { |name, value| "#{URI.encode(name.to_s)}=#{URI.encode(value.to_s)}" }.join("&")
84
+ end
85
+ end
86
+
87
+ class Patch < Request
88
+ def create_request
89
+ host, port, path, query = parse_uri
90
+ patch = Net::HTTP::Patch.new("#{path}?#{query || to_query_string(@params)}")
91
+ [host, port, patch]
92
+ end
93
+
94
+ def to_query_string(params_as_hash)
95
+ params_as_hash.map { |name, value| "#{URI.encode(name.to_s)}=#{URI.encode(value.to_s)}" }.join("&")
96
+ end
97
+ end
62
98
 
63
99
  class Post < Request
64
100
  def create_request
@@ -7,6 +7,29 @@ class ServerHeadersTest < Test::Unit::TestCase
7
7
 
8
8
  assert_equal("FooBar", response.headers["Test-Header"])
9
9
  end
10
+
11
+ def test_response_headers_to_hash
12
+ get = HTTP::Get.new("/set_header")
13
+ response = @client.execute(get)
14
+ response_hash = response.headers.to_hash
15
+ assert_equal(response_hash["Test-Header"], "FooBar")
16
+ assert_equal(response_hash["Content-Length"], "0")
17
+ end
18
+
19
+ def test_response_headers_iteration
20
+ get = HTTP::Get.new("/set_header")
21
+ response = @client.execute(get)
22
+
23
+ headers = values = []
24
+ response.headers.each do |header, value|
25
+ headers << header; values << value
26
+ end
27
+
28
+ assert headers.include? "Test-Header"
29
+ assert headers.include? "Content-Length"
30
+ assert values.include? "FooBar"
31
+ assert values.include? "0"
32
+ end
10
33
 
11
34
  def setup
12
35
  @client = HTTP::Client.new(:default_host => "http://localhost:8080")
metadata CHANGED
@@ -2,15 +2,16 @@
2
2
  name: jruby-httpclient
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.0
5
+ version: 1.1.0
6
6
  platform: java
7
7
  authors:
8
8
  - Adam Esterline
9
+ - Aaron Spiegel
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
13
 
13
- date: 2011-07-10 00:00:00 -06:00
14
+ date: 2012-01-01 00:00:00 -07:00
14
15
  default_executable:
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency