bartzon-httparty 0.6.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.
Files changed (70) hide show
  1. data/.gitignore +8 -0
  2. data/History +216 -0
  3. data/MIT-LICENSE +20 -0
  4. data/Manifest +47 -0
  5. data/README.rdoc +54 -0
  6. data/Rakefile +89 -0
  7. data/VERSION +1 -0
  8. data/bartzon-httparty.gemspec +147 -0
  9. data/bin/httparty +108 -0
  10. data/cucumber.yml +1 -0
  11. data/examples/aaws.rb +32 -0
  12. data/examples/basic.rb +11 -0
  13. data/examples/custom_parsers.rb +67 -0
  14. data/examples/delicious.rb +37 -0
  15. data/examples/google.rb +16 -0
  16. data/examples/rubyurl.rb +14 -0
  17. data/examples/twitter.rb +31 -0
  18. data/examples/whoismyrep.rb +10 -0
  19. data/features/basic_authentication.feature +20 -0
  20. data/features/command_line.feature +7 -0
  21. data/features/deals_with_http_error_codes.feature +26 -0
  22. data/features/digest_authentication.feature +20 -0
  23. data/features/handles_compressed_responses.feature +19 -0
  24. data/features/handles_multiple_formats.feature +34 -0
  25. data/features/steps/env.rb +23 -0
  26. data/features/steps/httparty_response_steps.rb +26 -0
  27. data/features/steps/httparty_steps.rb +27 -0
  28. data/features/steps/mongrel_helper.rb +94 -0
  29. data/features/steps/remote_service_steps.rb +69 -0
  30. data/features/supports_redirection.feature +22 -0
  31. data/features/supports_timeout_option.feature +13 -0
  32. data/httparty.gemspec +146 -0
  33. data/lib/httparty.rb +383 -0
  34. data/lib/httparty/cookie_hash.rb +22 -0
  35. data/lib/httparty/core_extensions.rb +31 -0
  36. data/lib/httparty/exceptions.rb +26 -0
  37. data/lib/httparty/module_inheritable_attributes.rb +34 -0
  38. data/lib/httparty/net_digest_auth.rb +35 -0
  39. data/lib/httparty/parser.rb +141 -0
  40. data/lib/httparty/request.rb +277 -0
  41. data/lib/httparty/response.rb +79 -0
  42. data/spec/fixtures/delicious.xml +23 -0
  43. data/spec/fixtures/empty.xml +0 -0
  44. data/spec/fixtures/google.html +3 -0
  45. data/spec/fixtures/ssl/generate.sh +29 -0
  46. data/spec/fixtures/ssl/generated/1fe462c2.0 +15 -0
  47. data/spec/fixtures/ssl/generated/bogushost.crt +13 -0
  48. data/spec/fixtures/ssl/generated/ca.crt +15 -0
  49. data/spec/fixtures/ssl/generated/ca.key +15 -0
  50. data/spec/fixtures/ssl/generated/selfsigned.crt +14 -0
  51. data/spec/fixtures/ssl/generated/server.crt +13 -0
  52. data/spec/fixtures/ssl/generated/server.key +15 -0
  53. data/spec/fixtures/ssl/openssl-exts.cnf +9 -0
  54. data/spec/fixtures/twitter.json +1 -0
  55. data/spec/fixtures/twitter.xml +403 -0
  56. data/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
  57. data/spec/httparty/cookie_hash_spec.rb +71 -0
  58. data/spec/httparty/parser_spec.rb +155 -0
  59. data/spec/httparty/request_spec.rb +488 -0
  60. data/spec/httparty/response_spec.rb +188 -0
  61. data/spec/httparty/ssl_spec.rb +55 -0
  62. data/spec/httparty_spec.rb +570 -0
  63. data/spec/spec.opts +3 -0
  64. data/spec/spec_helper.rb +20 -0
  65. data/spec/support/ssl_test_helper.rb +25 -0
  66. data/spec/support/ssl_test_server.rb +69 -0
  67. data/spec/support/stub_response.rb +30 -0
  68. data/website/css/common.css +47 -0
  69. data/website/index.html +73 -0
  70. metadata +244 -0
data/spec/spec.opts ADDED
@@ -0,0 +1,3 @@
1
+ --colour
2
+ --format specdoc
3
+ --backtrace
@@ -0,0 +1,20 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'httparty')
2
+ require 'spec/autorun'
3
+ require 'fakeweb'
4
+
5
+ def file_fixture(filename)
6
+ open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename.to_s}")).read
7
+ end
8
+
9
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
10
+
11
+ Spec::Runner.configure do |config|
12
+ config.include HTTParty::StubResponse
13
+ config.include HTTParty::SSLTestHelper
14
+ config.before(:suite) do
15
+ FakeWeb.allow_net_connect = false
16
+ end
17
+ config.after(:suite) do
18
+ FakeWeb.allow_net_connect = true
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ module HTTParty
2
+ module SSLTestHelper
3
+ def ssl_verify_test(mode, ca_basename, server_cert_filename)
4
+ test_server = nil
5
+ begin
6
+ # Start an HTTPS server
7
+ test_server = SSLTestServer.new(
8
+ :rsa_key => File.read(File.expand_path("../../fixtures/ssl/generated/server.key", __FILE__)),
9
+ :cert => File.read(File.expand_path("../../fixtures/ssl/generated/#{server_cert_filename}", __FILE__)))
10
+ test_server.start
11
+
12
+ # Build a request
13
+ if mode
14
+ ca_path = File.expand_path("../../fixtures/ssl/generated/#{ca_basename}", __FILE__)
15
+ raise ArgumentError.new("#{ca_path} does not exist") unless File.exist?(ca_path)
16
+ return HTTParty.get("https://localhost:#{test_server.port}/", :format => :json, :timeout=>30, mode => ca_path)
17
+ else
18
+ return HTTParty.get("https://localhost:#{test_server.port}/", :format => :json, :timeout=>30)
19
+ end
20
+ ensure
21
+ test_server.stop if test_server
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,69 @@
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
+ if @port == 0
26
+ @port = Socket::getnameinfo(@raw_server.getsockname, Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV)[1].to_i
27
+ end
28
+ @ssl_server = OpenSSL::SSL::SSLServer.new(@raw_server, @ctx)
29
+ @stopping_mutex.synchronize{
30
+ return if @stopping
31
+ @thread = Thread.new{ thread_main }
32
+ }
33
+ nil
34
+ end
35
+
36
+ def stop
37
+ @stopping_mutex.synchronize{
38
+ return if @stopping
39
+ @stopping = true
40
+ }
41
+ @thread.join
42
+ end
43
+
44
+ private
45
+
46
+ def thread_main
47
+ until @stopping_mutex.synchronize{ @stopping }
48
+ (rr,ww,ee) = select([@ssl_server.to_io], nil, nil, 0.1)
49
+ next unless rr && rr.include?(@ssl_server.to_io)
50
+ socket = @ssl_server.accept
51
+ Thread.new{
52
+ header = []
53
+ until (line = socket.readline).rstrip.empty?
54
+ header << line
55
+ end
56
+
57
+ socket.write <<'EOF'.gsub(/\r\n/n, "\n").gsub(/\n/n, "\r\n")
58
+ HTTP/1.1 200 OK
59
+ Connection: close
60
+ Content-Type: application/json; charset=UTF-8
61
+
62
+ {"success":true}
63
+ EOF
64
+ socket.close
65
+ }
66
+ end
67
+ @ssl_server.close
68
+ end
69
+ end
@@ -0,0 +1,30 @@
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!(:perform_actual_request).and_return(response)
12
+
13
+ HTTParty::Request.should_receive(:new).and_return(http_request)
14
+ end
15
+
16
+ def stub_response(body, code = 200)
17
+ unless defined?(@http) && @http
18
+ @http = Net::HTTP.new('localhost', 80)
19
+ @request.stub!(:http).and_return(@http)
20
+ @request.stub!(:uri).and_return(URI.parse("http://foo.com/foobar"))
21
+ end
22
+
23
+ response = Net::HTTPResponse::CODE_TO_OBJ[code.to_s].new("1.1", code, body)
24
+ response.stub!(:body).and_return(body)
25
+
26
+ @http.stub!(:request).and_return(response)
27
+ response
28
+ end
29
+ end
30
+ 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,244 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bartzon-httparty
3
+ version: !ruby/object:Gem::Version
4
+ hash: 5
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 6
9
+ - 1
10
+ version: 0.6.1
11
+ platform: ruby
12
+ authors:
13
+ - John Nunemaker
14
+ - Sandro Turriate
15
+ - Bart Zonneveld
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2010-08-09 00:00:00 +02:00
21
+ default_executable: httparty
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ name: crack
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - "="
30
+ - !ruby/object:Gem::Version
31
+ hash: 11
32
+ segments:
33
+ - 0
34
+ - 1
35
+ - 8
36
+ version: 0.1.8
37
+ type: :runtime
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: activesupport
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ hash: 5
48
+ segments:
49
+ - 2
50
+ - 3
51
+ version: "2.3"
52
+ type: :development
53
+ version_requirements: *id002
54
+ - !ruby/object:Gem::Dependency
55
+ name: cucumber
56
+ prerelease: false
57
+ requirement: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ hash: 5
63
+ segments:
64
+ - 0
65
+ - 7
66
+ version: "0.7"
67
+ type: :development
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: fakeweb
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ hash: 11
78
+ segments:
79
+ - 1
80
+ - 2
81
+ version: "1.2"
82
+ type: :development
83
+ version_requirements: *id004
84
+ - !ruby/object:Gem::Dependency
85
+ name: mongrel
86
+ prerelease: false
87
+ requirement: &id005 !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ~>
91
+ - !ruby/object:Gem::Version
92
+ hash: 13
93
+ segments:
94
+ - 1
95
+ - 1
96
+ version: "1.1"
97
+ type: :development
98
+ version_requirements: *id005
99
+ - !ruby/object:Gem::Dependency
100
+ name: rspec
101
+ prerelease: false
102
+ requirement: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ hash: 9
108
+ segments:
109
+ - 1
110
+ - 3
111
+ version: "1.3"
112
+ type: :development
113
+ version_requirements: *id006
114
+ description: Makes http fun! Also, makes consuming restful web services dead easy.
115
+ email: loop@superinfinite.com
116
+ executables:
117
+ - httparty
118
+ extensions: []
119
+
120
+ extra_rdoc_files:
121
+ - README.rdoc
122
+ files:
123
+ - .gitignore
124
+ - History
125
+ - MIT-LICENSE
126
+ - Manifest
127
+ - README.rdoc
128
+ - Rakefile
129
+ - VERSION
130
+ - bartzon-httparty.gemspec
131
+ - bin/httparty
132
+ - cucumber.yml
133
+ - examples/aaws.rb
134
+ - examples/basic.rb
135
+ - examples/custom_parsers.rb
136
+ - examples/delicious.rb
137
+ - examples/google.rb
138
+ - examples/rubyurl.rb
139
+ - examples/twitter.rb
140
+ - examples/whoismyrep.rb
141
+ - features/basic_authentication.feature
142
+ - features/command_line.feature
143
+ - features/deals_with_http_error_codes.feature
144
+ - features/digest_authentication.feature
145
+ - features/handles_compressed_responses.feature
146
+ - features/handles_multiple_formats.feature
147
+ - features/steps/env.rb
148
+ - features/steps/httparty_response_steps.rb
149
+ - features/steps/httparty_steps.rb
150
+ - features/steps/mongrel_helper.rb
151
+ - features/steps/remote_service_steps.rb
152
+ - features/supports_redirection.feature
153
+ - features/supports_timeout_option.feature
154
+ - httparty.gemspec
155
+ - lib/httparty.rb
156
+ - lib/httparty/cookie_hash.rb
157
+ - lib/httparty/core_extensions.rb
158
+ - lib/httparty/exceptions.rb
159
+ - lib/httparty/module_inheritable_attributes.rb
160
+ - lib/httparty/net_digest_auth.rb
161
+ - lib/httparty/parser.rb
162
+ - lib/httparty/request.rb
163
+ - lib/httparty/response.rb
164
+ - spec/fixtures/delicious.xml
165
+ - spec/fixtures/empty.xml
166
+ - spec/fixtures/google.html
167
+ - spec/fixtures/ssl/generate.sh
168
+ - spec/fixtures/ssl/generated/1fe462c2.0
169
+ - spec/fixtures/ssl/generated/bogushost.crt
170
+ - spec/fixtures/ssl/generated/ca.crt
171
+ - spec/fixtures/ssl/generated/ca.key
172
+ - spec/fixtures/ssl/generated/selfsigned.crt
173
+ - spec/fixtures/ssl/generated/server.crt
174
+ - spec/fixtures/ssl/generated/server.key
175
+ - spec/fixtures/ssl/openssl-exts.cnf
176
+ - spec/fixtures/twitter.json
177
+ - spec/fixtures/twitter.xml
178
+ - spec/fixtures/undefined_method_add_node_for_nil.xml
179
+ - spec/httparty/cookie_hash_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
+ - website/css/common.css
191
+ - website/index.html
192
+ has_rdoc: true
193
+ homepage: http://httparty.rubyforge.org
194
+ licenses: []
195
+
196
+ post_install_message: When you HTTParty, you must party hard!
197
+ rdoc_options:
198
+ - --charset=UTF-8
199
+ require_paths:
200
+ - lib
201
+ required_ruby_version: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ hash: 3
207
+ segments:
208
+ - 0
209
+ version: "0"
210
+ required_rubygems_version: !ruby/object:Gem::Requirement
211
+ none: false
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ hash: 3
216
+ segments:
217
+ - 0
218
+ version: "0"
219
+ requirements: []
220
+
221
+ rubyforge_project: httparty
222
+ rubygems_version: 1.3.7
223
+ signing_key:
224
+ specification_version: 3
225
+ summary: Makes http fun! Also, makes consuming restful web services dead easy.
226
+ test_files:
227
+ - spec/httparty/cookie_hash_spec.rb
228
+ - spec/httparty/parser_spec.rb
229
+ - spec/httparty/request_spec.rb
230
+ - spec/httparty/response_spec.rb
231
+ - spec/httparty/ssl_spec.rb
232
+ - spec/httparty_spec.rb
233
+ - spec/spec_helper.rb
234
+ - spec/support/ssl_test_helper.rb
235
+ - spec/support/ssl_test_server.rb
236
+ - spec/support/stub_response.rb
237
+ - examples/aaws.rb
238
+ - examples/basic.rb
239
+ - examples/custom_parsers.rb
240
+ - examples/delicious.rb
241
+ - examples/google.rb
242
+ - examples/rubyurl.rb
243
+ - examples/twitter.rb
244
+ - examples/whoismyrep.rb