dkastner-httparty 0.9.0

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.
Files changed (80) hide show
  1. data/.gitignore +10 -0
  2. data/.travis.yml +8 -0
  3. data/Gemfile +15 -0
  4. data/Guardfile +16 -0
  5. data/History +293 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +79 -0
  8. data/Rakefile +15 -0
  9. data/bin/httparty +114 -0
  10. data/cucumber.yml +1 -0
  11. data/examples/aaws.rb +32 -0
  12. data/examples/basic.rb +32 -0
  13. data/examples/crack.rb +19 -0
  14. data/examples/custom_parsers.rb +67 -0
  15. data/examples/delicious.rb +37 -0
  16. data/examples/google.rb +16 -0
  17. data/examples/headers_and_user_agents.rb +6 -0
  18. data/examples/nokogiri_html_parser.rb +22 -0
  19. data/examples/rubyurl.rb +14 -0
  20. data/examples/tripit_sign_in.rb +33 -0
  21. data/examples/twitter.rb +31 -0
  22. data/examples/whoismyrep.rb +10 -0
  23. data/features/basic_authentication.feature +20 -0
  24. data/features/command_line.feature +7 -0
  25. data/features/deals_with_http_error_codes.feature +26 -0
  26. data/features/digest_authentication.feature +20 -0
  27. data/features/handles_compressed_responses.feature +19 -0
  28. data/features/handles_multiple_formats.feature +34 -0
  29. data/features/steps/env.rb +22 -0
  30. data/features/steps/httparty_response_steps.rb +26 -0
  31. data/features/steps/httparty_steps.rb +27 -0
  32. data/features/steps/mongrel_helper.rb +94 -0
  33. data/features/steps/remote_service_steps.rb +69 -0
  34. data/features/supports_redirection.feature +22 -0
  35. data/features/supports_timeout_option.feature +13 -0
  36. data/httparty.gemspec +24 -0
  37. data/lib/httparty.rb +503 -0
  38. data/lib/httparty/connection_adapter.rb +116 -0
  39. data/lib/httparty/cookie_hash.rb +22 -0
  40. data/lib/httparty/core_extensions.rb +32 -0
  41. data/lib/httparty/exceptions.rb +26 -0
  42. data/lib/httparty/hash_conversions.rb +51 -0
  43. data/lib/httparty/module_inheritable_attributes.rb +44 -0
  44. data/lib/httparty/net_digest_auth.rb +84 -0
  45. data/lib/httparty/parser.rb +145 -0
  46. data/lib/httparty/request.rb +243 -0
  47. data/lib/httparty/response.rb +62 -0
  48. data/lib/httparty/response/headers.rb +31 -0
  49. data/lib/httparty/version.rb +3 -0
  50. data/spec/fixtures/delicious.xml +23 -0
  51. data/spec/fixtures/empty.xml +0 -0
  52. data/spec/fixtures/google.html +3 -0
  53. data/spec/fixtures/ssl/generate.sh +29 -0
  54. data/spec/fixtures/ssl/generated/1fe462c2.0 +16 -0
  55. data/spec/fixtures/ssl/generated/bogushost.crt +13 -0
  56. data/spec/fixtures/ssl/generated/ca.crt +16 -0
  57. data/spec/fixtures/ssl/generated/ca.key +15 -0
  58. data/spec/fixtures/ssl/generated/selfsigned.crt +14 -0
  59. data/spec/fixtures/ssl/generated/server.crt +13 -0
  60. data/spec/fixtures/ssl/generated/server.key +15 -0
  61. data/spec/fixtures/ssl/openssl-exts.cnf +9 -0
  62. data/spec/fixtures/twitter.json +1 -0
  63. data/spec/fixtures/twitter.xml +403 -0
  64. data/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
  65. data/spec/httparty/connection_adapter_spec.rb +206 -0
  66. data/spec/httparty/cookie_hash_spec.rb +70 -0
  67. data/spec/httparty/net_digest_auth_spec.rb +115 -0
  68. data/spec/httparty/parser_spec.rb +171 -0
  69. data/spec/httparty/request_spec.rb +507 -0
  70. data/spec/httparty/response_spec.rb +214 -0
  71. data/spec/httparty/ssl_spec.rb +62 -0
  72. data/spec/httparty_spec.rb +703 -0
  73. data/spec/spec.opts +2 -0
  74. data/spec/spec_helper.rb +30 -0
  75. data/spec/support/ssl_test_helper.rb +47 -0
  76. data/spec/support/ssl_test_server.rb +80 -0
  77. data/spec/support/stub_response.rb +43 -0
  78. data/website/css/common.css +47 -0
  79. data/website/index.html +73 -0
  80. metadata +190 -0
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --backtrace
@@ -0,0 +1,30 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "httparty"
3
+
4
+ require 'spec/autorun'
5
+ require 'fakeweb'
6
+
7
+ def file_fixture(filename)
8
+ open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename.to_s}")).read
9
+ end
10
+
11
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
12
+
13
+ Spec::Runner.configure do |config|
14
+ config.include HTTParty::StubResponse
15
+ config.include HTTParty::SSLTestHelper
16
+
17
+ config.before(:suite) do
18
+ FakeWeb.allow_net_connect = false
19
+ end
20
+
21
+ config.after(:suite) do
22
+ FakeWeb.allow_net_connect = true
23
+ end
24
+ end
25
+
26
+ Spec::Matchers.define :use_ssl do
27
+ match do |connection|
28
+ connection.use_ssl?
29
+ end
30
+ end
@@ -0,0 +1,47 @@
1
+ require 'pathname'
2
+
3
+ module HTTParty
4
+ module SSLTestHelper
5
+ def ssl_verify_test(mode, ca_basename, server_cert_filename)
6
+ options = {
7
+ :format => :json,
8
+ :timeout => 30,
9
+ }
10
+
11
+ if mode
12
+ ca_path = File.expand_path("../../fixtures/ssl/generated/#{ca_basename}", __FILE__)
13
+ raise ArgumentError.new("#{ca_path} does not exist") unless File.exist?(ca_path)
14
+ options[mode] = ca_path
15
+ end
16
+
17
+ begin
18
+ test_server = SSLTestServer.new(
19
+ :rsa_key => File.read(File.expand_path("../../fixtures/ssl/generated/server.key", __FILE__)),
20
+ :cert => File.read(File.expand_path("../../fixtures/ssl/generated/#{server_cert_filename}", __FILE__)))
21
+
22
+ test_server.start
23
+
24
+ if mode
25
+ ca_path = File.expand_path("../../fixtures/ssl/generated/#{ca_basename}", __FILE__)
26
+ raise ArgumentError.new("#{ca_path} does not exist") unless File.exist?(ca_path)
27
+ return HTTParty.get("https://localhost:#{test_server.port}/", :format => :json, :timeout => 30, mode => ca_path)
28
+ else
29
+ return HTTParty.get("https://localhost:#{test_server.port}/", :format => :json, :timeout => 30)
30
+ end
31
+ ensure
32
+ test_server.stop if test_server
33
+ end
34
+
35
+ test_server = SSLTestServer.new({
36
+ :rsa_key => path.join('server.key').read,
37
+ :cert => path.join(server_cert_filename).read,
38
+ })
39
+
40
+ test_server.start
41
+
42
+ HTTParty.get("https://localhost:#{test_server.port}/", options)
43
+ ensure
44
+ test_server.stop if test_server
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,80 @@
1
+ require 'openssl'
2
+ require 'socket'
3
+ require 'thread'
4
+
5
+ # NOTE: This code is garbage. It probably has deadlocks, it might leak
6
+ # threads, and otherwise cause problems in a real system. It's really only
7
+ # intended for testing HTTParty.
8
+ class SSLTestServer
9
+ attr_accessor :ctx # SSLContext object
10
+ attr_reader :port
11
+
12
+ def initialize(options={})
13
+ @ctx = OpenSSL::SSL::SSLContext.new
14
+ @ctx.cert = OpenSSL::X509::Certificate.new(options[:cert])
15
+ @ctx.key = OpenSSL::PKey::RSA.new(options[:rsa_key])
16
+ @ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE # Don't verify client certificate
17
+ @port = options[:port] || 0
18
+ @thread = nil
19
+ @stopping_mutex = Mutex.new
20
+ @stopping = false
21
+ end
22
+
23
+ def start
24
+ @raw_server = TCPServer.new(@port)
25
+
26
+ if @port == 0
27
+ @port = Socket::getnameinfo(@raw_server.getsockname, Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV)[1].to_i
28
+ end
29
+
30
+ @ssl_server = OpenSSL::SSL::SSLServer.new(@raw_server, @ctx)
31
+
32
+ @stopping_mutex.synchronize{
33
+ return if @stopping
34
+ @thread = Thread.new{ thread_main }
35
+ }
36
+
37
+ nil
38
+ end
39
+
40
+ def stop
41
+ @stopping_mutex.synchronize{
42
+ return if @stopping
43
+ @stopping = true
44
+ }
45
+ @thread.join
46
+ end
47
+
48
+ private
49
+
50
+ def thread_main
51
+ until @stopping_mutex.synchronize{ @stopping }
52
+ (rr,ww,ee) = select([@ssl_server.to_io], nil, nil, 0.1)
53
+
54
+ next unless rr && rr.include?(@ssl_server.to_io)
55
+
56
+ socket = @ssl_server.accept
57
+
58
+ Thread.new{
59
+ header = []
60
+
61
+ until (line = socket.readline).rstrip.empty?
62
+ header << line
63
+ end
64
+
65
+ response =<<EOF
66
+ HTTP/1.1 200 OK
67
+ Connection: close
68
+ Content-Type: application/json; charset=UTF-8
69
+
70
+ {"success":true}
71
+ EOF
72
+
73
+ socket.write(response.gsub(/\r\n/n, "\n").gsub(/\n/n, "\r\n"))
74
+ socket.close
75
+ }
76
+ end
77
+
78
+ @ssl_server.close
79
+ end
80
+ end
@@ -0,0 +1,43 @@
1
+ module HTTParty
2
+ module StubResponse
3
+ def stub_http_response_with(filename)
4
+ format = filename.split('.').last.intern
5
+ data = file_fixture(filename)
6
+
7
+ response = Net::HTTPOK.new("1.1", 200, "Content for you")
8
+ response.stub!(:body).and_return(data)
9
+
10
+ http_request = HTTParty::Request.new(Net::HTTP::Get, 'http://localhost', :format => format)
11
+ http_request.stub_chain(:http, :request).and_return(response)
12
+
13
+ HTTParty::Request.should_receive(:new).and_return(http_request)
14
+ end
15
+
16
+ def stub_chunked_http_response_with(chunks)
17
+ response = Net::HTTPResponse.new("1.1", 200, nil)
18
+ response.stub(:chunked_data).and_return(chunks)
19
+ def response.read_body(&block)
20
+ @body || chunked_data.each(&block)
21
+ end
22
+
23
+ http_request = HTTParty::Request.new(Net::HTTP::Get, 'http://localhost', :format => "html")
24
+ http_request.stub_chain(:http, :request).and_yield(response).and_return(response)
25
+
26
+ HTTParty::Request.should_receive(:new).and_return(http_request)
27
+ end
28
+
29
+ def stub_response(body, code = 200)
30
+ @request.options[:base_uri] ||= 'http://localhost'
31
+ unless defined?(@http) && @http
32
+ @http = Net::HTTP.new('localhost', 80)
33
+ @request.stub!(:http).and_return(@http)
34
+ end
35
+
36
+ response = Net::HTTPResponse::CODE_TO_OBJ[code.to_s].new("1.1", code, body)
37
+ response.stub!(:body).and_return(body)
38
+
39
+ @http.stub!(:request).and_return(response)
40
+ response
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,47 @@
1
+ @media screen, projection {
2
+ /*
3
+ Copyright (c) 2007, Yahoo! Inc. All rights reserved.
4
+ Code licensed under the BSD License:
5
+ http://developer.yahoo.net/yui/license.txt
6
+ version: 2.2.0
7
+ */
8
+ body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}pre, code {font:115% monospace;*font-size:100%;}body * {line-height:1.22em;}
9
+ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}/*ol,ul {list-style:none;}*/caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;}
10
+ /* end of yahoo reset and fonts */
11
+
12
+ body {color:#333; background:#4b1a1a; line-height:1.3;}
13
+ p {margin:0 0 20px;}
14
+ a {color:#4b1a1a;}
15
+ a:hover {text-decoration:none;}
16
+ strong {font-weight:bold;}
17
+ em {font-style:italics;}
18
+ h1,h2,h3,h4,h5,h6 {font-weight:bold;}
19
+ h1 {font-size:197%; margin:30px 0; color:#4b1a1a;}
20
+ h2 {font-size:174%; margin:20px 0; color:#b8111a;}
21
+ h3 {font-size:152%; margin:10px 0;}
22
+ h4 {font-size:129%; margin:10px 0;}
23
+ pre {background:#eee; margin:0 0 20px; padding:20px; border:1px solid #ccc; font-size:100%; overflow:auto;}
24
+ code {font-size:100%; margin:0; padding:0;}
25
+ ul, ol {margin:10px 0 10px 25px;}
26
+ ol li {margin:0 0 10px;}
27
+
28
+
29
+
30
+
31
+
32
+ div#wrapper {background:#fff; width:560px; margin:0 auto; padding:20px; border:10px solid #bc8c46; border-width:0 10px;}
33
+ div#header {position:relative; border-bottom:1px dotted; margin:0 0 10px; padding:0 0 10px;}
34
+ div#header p {margin:0; padding:0;}
35
+ div#header h1 {margin:0; padding:0;}
36
+ ul#nav {position:absolute; top:0; right:0; list-style:none; margin:0; padding:0;}
37
+ ul#nav li {display:inline; padding:0 0 0 5px;}
38
+ ul#nav li a {}
39
+ div#content {}
40
+ div#footer {margin:40px 0 0; border-top:1px dotted; padding:10px 0 0;}
41
+
42
+
43
+
44
+
45
+
46
+
47
+ }
@@ -0,0 +1,73 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
+ <title>HTTParty by John Nunemaker</title>
6
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
7
+ </head>
8
+ <body>
9
+
10
+ <div id="wrapper">
11
+ <div id="header">
12
+ <h1>HTTParty</h1>
13
+ <p>Tonight we're gonna HTTParty like it's 1999!</p>
14
+
15
+ <ul id="nav">
16
+ <li><a href="rdoc/">Docs</a></li>
17
+ <li><a href="http://github.com/jnunemaker/httparty">Github</a></li>
18
+ <li><a href="http://rubyforge.org/projects/httparty/">Rubyforge</a></li>
19
+ </ul>
20
+ </div>
21
+
22
+ <div id="content">
23
+ <h2>Install</h2>
24
+ <pre><code>$ sudo gem install httparty</code></pre>
25
+
26
+ <h2>Some Quick Examples</h2>
27
+
28
+ <p>The following is a simple example of wrapping Twitter's API for posting updates.</p>
29
+
30
+ <pre><code>class Twitter
31
+ include HTTParty
32
+ base_uri 'twitter.com'
33
+ basic_auth 'username', 'password'
34
+ end
35
+
36
+ Twitter.post('/statuses/update.json', :query => {:status => "It's an HTTParty and everyone is invited!"})</code></pre>
37
+
38
+ <p>That is really it! The object returned is a ruby hash that is decoded from Twitter's json response. JSON parsing is used because of the .json extension in the path of the request. You can also explicitly set a format (see the examples). </p>
39
+
40
+ <p>That works and all but what if you don't want to embed your username and password in the class? Below is an example to fix that:</p>
41
+
42
+ <pre><code>class Twitter
43
+ include HTTParty
44
+ base_uri 'twitter.com'
45
+
46
+ def initialize(u, p)
47
+ @auth = {:username => u, :password => p}
48
+ end
49
+
50
+ def post(text)
51
+ options = { :query => {:status => text}, :basic_auth => @auth }
52
+ self.class.post('/statuses/update.json', options)
53
+ end
54
+ end
55
+
56
+ Twitter.new('username', 'password').post("It's an HTTParty and everyone is invited!")</code></pre>
57
+
58
+ <p><strong>More Examples:</strong> There are <a href="http://github.com/jnunemaker/httparty/tree/master/examples/">several examples in the gem itself</a>.</p>
59
+
60
+ <h2>Support</h2>
61
+ <p>Conversations welcome in the <a href="http://groups.google.com/group/httparty-gem">google group</a> and bugs/features over at <a href="http://github.com/jnunemaker/httparty">Github</a>.</p>
62
+
63
+
64
+ </div>
65
+
66
+ <div id="footer">
67
+ <p>Created by <a href="http://addictedtonew.com/about/">John Nunemaker</a> |
68
+ <a href="http://orderedlist.com/">Hire Me at Ordered List</a></p>
69
+ </div>
70
+ </div>
71
+
72
+ </body>
73
+ </html>
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dkastner-httparty
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - John Nunemaker
9
+ - Sandro Turriate
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-11-16 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: multi_json
17
+ requirement: &2158190760 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2158190760
26
+ - !ruby/object:Gem::Dependency
27
+ name: multi_xml
28
+ requirement: &2158190340 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *2158190340
37
+ description: Makes http fun! Also, makes consuming restful web services dead easy.
38
+ email:
39
+ - nunemaker@gmail.com
40
+ executables:
41
+ - httparty
42
+ extensions: []
43
+ extra_rdoc_files: []
44
+ files:
45
+ - .gitignore
46
+ - .travis.yml
47
+ - Gemfile
48
+ - Guardfile
49
+ - History
50
+ - MIT-LICENSE
51
+ - README.md
52
+ - Rakefile
53
+ - bin/httparty
54
+ - cucumber.yml
55
+ - examples/aaws.rb
56
+ - examples/basic.rb
57
+ - examples/crack.rb
58
+ - examples/custom_parsers.rb
59
+ - examples/delicious.rb
60
+ - examples/google.rb
61
+ - examples/headers_and_user_agents.rb
62
+ - examples/nokogiri_html_parser.rb
63
+ - examples/rubyurl.rb
64
+ - examples/tripit_sign_in.rb
65
+ - examples/twitter.rb
66
+ - examples/whoismyrep.rb
67
+ - features/basic_authentication.feature
68
+ - features/command_line.feature
69
+ - features/deals_with_http_error_codes.feature
70
+ - features/digest_authentication.feature
71
+ - features/handles_compressed_responses.feature
72
+ - features/handles_multiple_formats.feature
73
+ - features/steps/env.rb
74
+ - features/steps/httparty_response_steps.rb
75
+ - features/steps/httparty_steps.rb
76
+ - features/steps/mongrel_helper.rb
77
+ - features/steps/remote_service_steps.rb
78
+ - features/supports_redirection.feature
79
+ - features/supports_timeout_option.feature
80
+ - httparty.gemspec
81
+ - lib/httparty.rb
82
+ - lib/httparty/connection_adapter.rb
83
+ - lib/httparty/cookie_hash.rb
84
+ - lib/httparty/core_extensions.rb
85
+ - lib/httparty/exceptions.rb
86
+ - lib/httparty/hash_conversions.rb
87
+ - lib/httparty/module_inheritable_attributes.rb
88
+ - lib/httparty/net_digest_auth.rb
89
+ - lib/httparty/parser.rb
90
+ - lib/httparty/request.rb
91
+ - lib/httparty/response.rb
92
+ - lib/httparty/response/headers.rb
93
+ - lib/httparty/version.rb
94
+ - spec/fixtures/delicious.xml
95
+ - spec/fixtures/empty.xml
96
+ - spec/fixtures/google.html
97
+ - spec/fixtures/ssl/generate.sh
98
+ - spec/fixtures/ssl/generated/1fe462c2.0
99
+ - spec/fixtures/ssl/generated/bogushost.crt
100
+ - spec/fixtures/ssl/generated/ca.crt
101
+ - spec/fixtures/ssl/generated/ca.key
102
+ - spec/fixtures/ssl/generated/selfsigned.crt
103
+ - spec/fixtures/ssl/generated/server.crt
104
+ - spec/fixtures/ssl/generated/server.key
105
+ - spec/fixtures/ssl/openssl-exts.cnf
106
+ - spec/fixtures/twitter.json
107
+ - spec/fixtures/twitter.xml
108
+ - spec/fixtures/undefined_method_add_node_for_nil.xml
109
+ - spec/httparty/connection_adapter_spec.rb
110
+ - spec/httparty/cookie_hash_spec.rb
111
+ - spec/httparty/net_digest_auth_spec.rb
112
+ - spec/httparty/parser_spec.rb
113
+ - spec/httparty/request_spec.rb
114
+ - spec/httparty/response_spec.rb
115
+ - spec/httparty/ssl_spec.rb
116
+ - spec/httparty_spec.rb
117
+ - spec/spec.opts
118
+ - spec/spec_helper.rb
119
+ - spec/support/ssl_test_helper.rb
120
+ - spec/support/ssl_test_server.rb
121
+ - spec/support/stub_response.rb
122
+ - website/css/common.css
123
+ - website/index.html
124
+ homepage: http://jnunemaker.github.com/httparty
125
+ licenses: []
126
+ post_install_message: When you HTTParty, you must party hard!
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 1.8.10
145
+ signing_key:
146
+ specification_version: 3
147
+ summary: Makes http fun! Also, makes consuming restful web services dead easy.
148
+ test_files:
149
+ - features/basic_authentication.feature
150
+ - features/command_line.feature
151
+ - features/deals_with_http_error_codes.feature
152
+ - features/digest_authentication.feature
153
+ - features/handles_compressed_responses.feature
154
+ - features/handles_multiple_formats.feature
155
+ - features/steps/env.rb
156
+ - features/steps/httparty_response_steps.rb
157
+ - features/steps/httparty_steps.rb
158
+ - features/steps/mongrel_helper.rb
159
+ - features/steps/remote_service_steps.rb
160
+ - features/supports_redirection.feature
161
+ - features/supports_timeout_option.feature
162
+ - spec/fixtures/delicious.xml
163
+ - spec/fixtures/empty.xml
164
+ - spec/fixtures/google.html
165
+ - spec/fixtures/ssl/generate.sh
166
+ - spec/fixtures/ssl/generated/1fe462c2.0
167
+ - spec/fixtures/ssl/generated/bogushost.crt
168
+ - spec/fixtures/ssl/generated/ca.crt
169
+ - spec/fixtures/ssl/generated/ca.key
170
+ - spec/fixtures/ssl/generated/selfsigned.crt
171
+ - spec/fixtures/ssl/generated/server.crt
172
+ - spec/fixtures/ssl/generated/server.key
173
+ - spec/fixtures/ssl/openssl-exts.cnf
174
+ - spec/fixtures/twitter.json
175
+ - spec/fixtures/twitter.xml
176
+ - spec/fixtures/undefined_method_add_node_for_nil.xml
177
+ - spec/httparty/connection_adapter_spec.rb
178
+ - spec/httparty/cookie_hash_spec.rb
179
+ - spec/httparty/net_digest_auth_spec.rb
180
+ - spec/httparty/parser_spec.rb
181
+ - spec/httparty/request_spec.rb
182
+ - spec/httparty/response_spec.rb
183
+ - spec/httparty/ssl_spec.rb
184
+ - spec/httparty_spec.rb
185
+ - spec/spec.opts
186
+ - spec/spec_helper.rb
187
+ - spec/support/ssl_test_helper.rb
188
+ - spec/support/ssl_test_server.rb
189
+ - spec/support/stub_response.rb
190
+ has_rdoc: