dnclabs-httparty 0.6.1.2010090201

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 (69) hide show
  1. data/.gitignore +7 -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/bin/httparty +108 -0
  9. data/cucumber.yml +1 -0
  10. data/examples/aaws.rb +32 -0
  11. data/examples/basic.rb +11 -0
  12. data/examples/custom_parsers.rb +67 -0
  13. data/examples/delicious.rb +37 -0
  14. data/examples/google.rb +16 -0
  15. data/examples/rubyurl.rb +14 -0
  16. data/examples/twitter.rb +31 -0
  17. data/examples/whoismyrep.rb +10 -0
  18. data/features/basic_authentication.feature +20 -0
  19. data/features/command_line.feature +7 -0
  20. data/features/deals_with_http_error_codes.feature +26 -0
  21. data/features/digest_authentication.feature +20 -0
  22. data/features/handles_compressed_responses.feature +19 -0
  23. data/features/handles_multiple_formats.feature +34 -0
  24. data/features/steps/env.rb +23 -0
  25. data/features/steps/httparty_response_steps.rb +26 -0
  26. data/features/steps/httparty_steps.rb +27 -0
  27. data/features/steps/mongrel_helper.rb +94 -0
  28. data/features/steps/remote_service_steps.rb +69 -0
  29. data/features/supports_redirection.feature +22 -0
  30. data/features/supports_timeout_option.feature +13 -0
  31. data/httparty.gemspec +146 -0
  32. data/lib/httparty.rb +365 -0
  33. data/lib/httparty/cookie_hash.rb +22 -0
  34. data/lib/httparty/core_extensions.rb +31 -0
  35. data/lib/httparty/exceptions.rb +26 -0
  36. data/lib/httparty/module_inheritable_attributes.rb +34 -0
  37. data/lib/httparty/net_digest_auth.rb +35 -0
  38. data/lib/httparty/parser.rb +141 -0
  39. data/lib/httparty/request.rb +231 -0
  40. data/lib/httparty/response.rb +79 -0
  41. data/spec/fixtures/delicious.xml +23 -0
  42. data/spec/fixtures/empty.xml +0 -0
  43. data/spec/fixtures/google.html +3 -0
  44. data/spec/fixtures/ssl/generate.sh +29 -0
  45. data/spec/fixtures/ssl/generated/1fe462c2.0 +15 -0
  46. data/spec/fixtures/ssl/generated/bogushost.crt +13 -0
  47. data/spec/fixtures/ssl/generated/ca.crt +15 -0
  48. data/spec/fixtures/ssl/generated/ca.key +15 -0
  49. data/spec/fixtures/ssl/generated/selfsigned.crt +14 -0
  50. data/spec/fixtures/ssl/generated/server.crt +13 -0
  51. data/spec/fixtures/ssl/generated/server.key +15 -0
  52. data/spec/fixtures/ssl/openssl-exts.cnf +9 -0
  53. data/spec/fixtures/twitter.json +1 -0
  54. data/spec/fixtures/twitter.xml +403 -0
  55. data/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
  56. data/spec/httparty/cookie_hash_spec.rb +71 -0
  57. data/spec/httparty/parser_spec.rb +155 -0
  58. data/spec/httparty/request_spec.rb +430 -0
  59. data/spec/httparty/response_spec.rb +188 -0
  60. data/spec/httparty/ssl_spec.rb +54 -0
  61. data/spec/httparty_spec.rb +570 -0
  62. data/spec/spec.opts +3 -0
  63. data/spec/spec_helper.rb +20 -0
  64. data/spec/support/ssl_test_helper.rb +25 -0
  65. data/spec/support/ssl_test_server.rb +69 -0
  66. data/spec/support/stub_response.rb +30 -0
  67. data/website/css/common.css +47 -0
  68. data/website/index.html +73 -0
  69. metadata +245 -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,245 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dnclabs-httparty
3
+ version: !ruby/object:Gem::Version
4
+ hash: 4020180425
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 6
9
+ - 1
10
+ - 2010090201
11
+ version: 0.6.1.2010090201
12
+ platform: ruby
13
+ authors:
14
+ - John Nunemaker
15
+ - Sandro Turriate
16
+ - Wes Morgan
17
+ - Adrian Cushman
18
+ autorequire:
19
+ bindir: bin
20
+ cert_chain: []
21
+
22
+ date: 2010-09-02 00:00:00 -04:00
23
+ default_executable: httparty
24
+ dependencies:
25
+ - !ruby/object:Gem::Dependency
26
+ name: crack
27
+ prerelease: false
28
+ requirement: &id001 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - "="
32
+ - !ruby/object:Gem::Version
33
+ hash: 11
34
+ segments:
35
+ - 0
36
+ - 1
37
+ - 8
38
+ version: 0.1.8
39
+ type: :runtime
40
+ version_requirements: *id001
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ prerelease: false
44
+ requirement: &id002 !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ hash: 5
50
+ segments:
51
+ - 2
52
+ - 3
53
+ version: "2.3"
54
+ type: :development
55
+ version_requirements: *id002
56
+ - !ruby/object:Gem::Dependency
57
+ name: cucumber
58
+ prerelease: false
59
+ requirement: &id003 !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ~>
63
+ - !ruby/object:Gem::Version
64
+ hash: 5
65
+ segments:
66
+ - 0
67
+ - 7
68
+ version: "0.7"
69
+ type: :development
70
+ version_requirements: *id003
71
+ - !ruby/object:Gem::Dependency
72
+ name: fakeweb
73
+ prerelease: false
74
+ requirement: &id004 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ hash: 11
80
+ segments:
81
+ - 1
82
+ - 2
83
+ version: "1.2"
84
+ type: :development
85
+ version_requirements: *id004
86
+ - !ruby/object:Gem::Dependency
87
+ name: mongrel
88
+ prerelease: false
89
+ requirement: &id005 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ hash: 13
95
+ segments:
96
+ - 1
97
+ - 1
98
+ version: "1.1"
99
+ type: :development
100
+ version_requirements: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ name: rspec
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ hash: 9
110
+ segments:
111
+ - 1
112
+ - 3
113
+ version: "1.3"
114
+ type: :development
115
+ version_requirements: *id006
116
+ description: Makes http fun! Also, makes consuming restful web services dead easy. This is the DNC Labs fork.
117
+ email: innovationlab@dnc.org
118
+ executables:
119
+ - httparty
120
+ extensions: []
121
+
122
+ extra_rdoc_files:
123
+ - README.rdoc
124
+ files:
125
+ - .gitignore
126
+ - History
127
+ - MIT-LICENSE
128
+ - Manifest
129
+ - README.rdoc
130
+ - Rakefile
131
+ - VERSION
132
+ - bin/httparty
133
+ - cucumber.yml
134
+ - examples/aaws.rb
135
+ - examples/basic.rb
136
+ - examples/custom_parsers.rb
137
+ - examples/delicious.rb
138
+ - examples/google.rb
139
+ - examples/rubyurl.rb
140
+ - examples/twitter.rb
141
+ - examples/whoismyrep.rb
142
+ - features/basic_authentication.feature
143
+ - features/command_line.feature
144
+ - features/deals_with_http_error_codes.feature
145
+ - features/digest_authentication.feature
146
+ - features/handles_compressed_responses.feature
147
+ - features/handles_multiple_formats.feature
148
+ - features/steps/env.rb
149
+ - features/steps/httparty_response_steps.rb
150
+ - features/steps/httparty_steps.rb
151
+ - features/steps/mongrel_helper.rb
152
+ - features/steps/remote_service_steps.rb
153
+ - features/supports_redirection.feature
154
+ - features/supports_timeout_option.feature
155
+ - httparty.gemspec
156
+ - lib/httparty.rb
157
+ - lib/httparty/cookie_hash.rb
158
+ - lib/httparty/core_extensions.rb
159
+ - lib/httparty/exceptions.rb
160
+ - lib/httparty/module_inheritable_attributes.rb
161
+ - lib/httparty/net_digest_auth.rb
162
+ - lib/httparty/parser.rb
163
+ - lib/httparty/request.rb
164
+ - lib/httparty/response.rb
165
+ - spec/fixtures/delicious.xml
166
+ - spec/fixtures/empty.xml
167
+ - spec/fixtures/google.html
168
+ - spec/fixtures/ssl/generate.sh
169
+ - spec/fixtures/ssl/generated/1fe462c2.0
170
+ - spec/fixtures/ssl/generated/bogushost.crt
171
+ - spec/fixtures/ssl/generated/ca.crt
172
+ - spec/fixtures/ssl/generated/ca.key
173
+ - spec/fixtures/ssl/generated/selfsigned.crt
174
+ - spec/fixtures/ssl/generated/server.crt
175
+ - spec/fixtures/ssl/generated/server.key
176
+ - spec/fixtures/ssl/openssl-exts.cnf
177
+ - spec/fixtures/twitter.json
178
+ - spec/fixtures/twitter.xml
179
+ - spec/fixtures/undefined_method_add_node_for_nil.xml
180
+ - spec/httparty/cookie_hash_spec.rb
181
+ - spec/httparty/parser_spec.rb
182
+ - spec/httparty/request_spec.rb
183
+ - spec/httparty/response_spec.rb
184
+ - spec/httparty/ssl_spec.rb
185
+ - spec/httparty_spec.rb
186
+ - spec/spec.opts
187
+ - spec/spec_helper.rb
188
+ - spec/support/ssl_test_helper.rb
189
+ - spec/support/ssl_test_server.rb
190
+ - spec/support/stub_response.rb
191
+ - website/css/common.css
192
+ - website/index.html
193
+ has_rdoc: true
194
+ homepage: http://github.com/dnclabs/httparty/
195
+ licenses: []
196
+
197
+ post_install_message: When you HTTParty, you must party hard!
198
+ rdoc_options:
199
+ - --charset=UTF-8
200
+ require_paths:
201
+ - lib
202
+ required_ruby_version: !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ hash: 3
208
+ segments:
209
+ - 0
210
+ version: "0"
211
+ required_rubygems_version: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ hash: 3
217
+ segments:
218
+ - 0
219
+ version: "0"
220
+ requirements: []
221
+
222
+ rubyforge_project:
223
+ rubygems_version: 1.3.7
224
+ signing_key:
225
+ specification_version: 3
226
+ summary: Makes http fun! Also, makes consuming restful web services dead easy.
227
+ test_files:
228
+ - spec/httparty/cookie_hash_spec.rb
229
+ - spec/httparty/parser_spec.rb
230
+ - spec/httparty/request_spec.rb
231
+ - spec/httparty/response_spec.rb
232
+ - spec/httparty/ssl_spec.rb
233
+ - spec/httparty_spec.rb
234
+ - spec/spec_helper.rb
235
+ - spec/support/ssl_test_helper.rb
236
+ - spec/support/ssl_test_server.rb
237
+ - spec/support/stub_response.rb
238
+ - examples/aaws.rb
239
+ - examples/basic.rb
240
+ - examples/custom_parsers.rb
241
+ - examples/delicious.rb
242
+ - examples/google.rb
243
+ - examples/rubyurl.rb
244
+ - examples/twitter.rb
245
+ - examples/whoismyrep.rb