rest-client 1.6.14 → 2.0.2

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 (65) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +6 -6
  3. data/.rspec +2 -1
  4. data/.rubocop-disables.yml +384 -0
  5. data/.rubocop.yml +3 -0
  6. data/.travis.yml +46 -1
  7. data/AUTHORS +28 -5
  8. data/Gemfile +5 -1
  9. data/LICENSE +21 -0
  10. data/README.md +784 -0
  11. data/Rakefile +95 -12
  12. data/bin/restclient +11 -12
  13. data/history.md +180 -16
  14. data/lib/restclient.rb +25 -11
  15. data/lib/restclient/abstract_response.rb +171 -51
  16. data/lib/restclient/exceptions.rb +102 -56
  17. data/lib/restclient/params_array.rb +72 -0
  18. data/lib/restclient/payload.rb +43 -74
  19. data/lib/restclient/platform.rb +22 -2
  20. data/lib/restclient/raw_response.rb +7 -3
  21. data/lib/restclient/request.rb +672 -179
  22. data/lib/restclient/resource.rb +6 -7
  23. data/lib/restclient/response.rb +64 -10
  24. data/lib/restclient/utils.rb +235 -0
  25. data/lib/restclient/version.rb +2 -1
  26. data/lib/restclient/windows.rb +8 -0
  27. data/lib/restclient/windows/root_certs.rb +105 -0
  28. data/rest-client.gemspec +16 -11
  29. data/rest-client.windows.gemspec +19 -0
  30. data/spec/helpers.rb +22 -0
  31. data/spec/integration/_lib.rb +1 -0
  32. data/spec/integration/capath_verisign/415660c1.0 +14 -0
  33. data/spec/integration/capath_verisign/7651b327.0 +14 -0
  34. data/spec/integration/capath_verisign/README +8 -0
  35. data/spec/integration/capath_verisign/verisign.crt +14 -0
  36. data/spec/integration/httpbin_spec.rb +87 -0
  37. data/spec/integration/integration_spec.rb +125 -0
  38. data/spec/integration/request_spec.rb +72 -20
  39. data/spec/spec_helper.rb +29 -0
  40. data/spec/unit/_lib.rb +1 -0
  41. data/spec/unit/abstract_response_spec.rb +145 -0
  42. data/spec/unit/exceptions_spec.rb +108 -0
  43. data/spec/{master_shake.jpg → unit/master_shake.jpg} +0 -0
  44. data/spec/unit/params_array_spec.rb +36 -0
  45. data/spec/{payload_spec.rb → unit/payload_spec.rb} +73 -54
  46. data/spec/{raw_response_spec.rb → unit/raw_response_spec.rb} +5 -4
  47. data/spec/unit/request2_spec.rb +54 -0
  48. data/spec/unit/request_spec.rb +1250 -0
  49. data/spec/unit/resource_spec.rb +134 -0
  50. data/spec/unit/response_spec.rb +241 -0
  51. data/spec/unit/restclient_spec.rb +79 -0
  52. data/spec/unit/utils_spec.rb +147 -0
  53. data/spec/unit/windows/root_certs_spec.rb +22 -0
  54. metadata +143 -53
  55. data/README.rdoc +0 -300
  56. data/lib/restclient/net_http_ext.rb +0 -55
  57. data/spec/abstract_response_spec.rb +0 -85
  58. data/spec/base.rb +0 -13
  59. data/spec/exceptions_spec.rb +0 -98
  60. data/spec/integration_spec.rb +0 -38
  61. data/spec/request2_spec.rb +0 -35
  62. data/spec/request_spec.rb +0 -528
  63. data/spec/resource_spec.rb +0 -136
  64. data/spec/response_spec.rb +0 -169
  65. data/spec/restclient_spec.rb +0 -73
@@ -0,0 +1,147 @@
1
+ require_relative '_lib'
2
+
3
+ describe RestClient::Utils do
4
+ describe '.get_encoding_from_headers' do
5
+ it 'assumes no encoding by default for text' do
6
+ headers = {:content_type => 'text/plain'}
7
+ expect(RestClient::Utils.get_encoding_from_headers(headers)).
8
+ to eq nil
9
+ end
10
+
11
+ it 'returns nil on failures' do
12
+ expect(RestClient::Utils.get_encoding_from_headers(
13
+ {:content_type => 'blah'})).to eq nil
14
+ expect(RestClient::Utils.get_encoding_from_headers(
15
+ {})).to eq nil
16
+ expect(RestClient::Utils.get_encoding_from_headers(
17
+ {:content_type => 'foo; bar=baz'})).to eq nil
18
+ end
19
+
20
+ it 'handles various charsets' do
21
+ expect(RestClient::Utils.get_encoding_from_headers(
22
+ {:content_type => 'text/plain; charset=UTF-8'})).to eq 'UTF-8'
23
+ expect(RestClient::Utils.get_encoding_from_headers(
24
+ {:content_type => 'application/json; charset=ISO-8859-1'})).
25
+ to eq 'ISO-8859-1'
26
+ expect(RestClient::Utils.get_encoding_from_headers(
27
+ {:content_type => 'text/html; charset=windows-1251'})).
28
+ to eq 'windows-1251'
29
+
30
+ expect(RestClient::Utils.get_encoding_from_headers(
31
+ {:content_type => 'text/html; charset="UTF-16"'})).
32
+ to eq 'UTF-16'
33
+ end
34
+ end
35
+
36
+ describe '.cgi_parse_header' do
37
+ it 'parses headers' do
38
+ expect(RestClient::Utils.cgi_parse_header('text/plain')).
39
+ to eq ['text/plain', {}]
40
+
41
+ expect(RestClient::Utils.cgi_parse_header('text/vnd.just.made.this.up ; ')).
42
+ to eq ['text/vnd.just.made.this.up', {}]
43
+
44
+ expect(RestClient::Utils.cgi_parse_header('text/plain;charset=us-ascii')).
45
+ to eq ['text/plain', {'charset' => 'us-ascii'}]
46
+
47
+ expect(RestClient::Utils.cgi_parse_header('text/plain ; charset="us-ascii"')).
48
+ to eq ['text/plain', {'charset' => 'us-ascii'}]
49
+
50
+ expect(RestClient::Utils.cgi_parse_header(
51
+ 'text/plain ; charset="us-ascii"; another=opt')).
52
+ to eq ['text/plain', {'charset' => 'us-ascii', 'another' => 'opt'}]
53
+
54
+ expect(RestClient::Utils.cgi_parse_header(
55
+ 'attachment; filename="silly.txt"')).
56
+ to eq ['attachment', {'filename' => 'silly.txt'}]
57
+
58
+ expect(RestClient::Utils.cgi_parse_header(
59
+ 'attachment; filename="strange;name"')).
60
+ to eq ['attachment', {'filename' => 'strange;name'}]
61
+
62
+ expect(RestClient::Utils.cgi_parse_header(
63
+ 'attachment; filename="strange;name";size=123;')).to eq \
64
+ ['attachment', {'filename' => 'strange;name', 'size' => '123'}]
65
+
66
+ expect(RestClient::Utils.cgi_parse_header(
67
+ 'form-data; name="files"; filename="fo\\"o;bar"')).to eq \
68
+ ['form-data', {'name' => 'files', 'filename' => 'fo"o;bar'}]
69
+ end
70
+ end
71
+
72
+ describe '.encode_query_string' do
73
+ it 'handles simple hashes' do
74
+ {
75
+ {foo: 123, bar: 456} => 'foo=123&bar=456',
76
+ {'foo' => 123, 'bar' => 456} => 'foo=123&bar=456',
77
+ {foo: 'abc', bar: 'one two'} => 'foo=abc&bar=one+two',
78
+ {escaped: '1+2=3'} => 'escaped=1%2B2%3D3',
79
+ {'escaped + key' => 'foo'} => 'escaped+%2B+key=foo',
80
+ }.each_pair do |input, expected|
81
+ expect(RestClient::Utils.encode_query_string(input)).to eq expected
82
+ end
83
+ end
84
+
85
+ it 'handles simple arrays' do
86
+ {
87
+ {foo: [1, 2, 3]} => 'foo[]=1&foo[]=2&foo[]=3',
88
+ {foo: %w{a b c}, bar: [1, 2, 3]} => 'foo[]=a&foo[]=b&foo[]=c&bar[]=1&bar[]=2&bar[]=3',
89
+ {foo: ['one two', 3]} => 'foo[]=one+two&foo[]=3',
90
+ {'a+b' => [1,2,3]} => 'a%2Bb[]=1&a%2Bb[]=2&a%2Bb[]=3',
91
+ }.each_pair do |input, expected|
92
+ expect(RestClient::Utils.encode_query_string(input)).to eq expected
93
+ end
94
+ end
95
+
96
+ it 'handles nested hashes' do
97
+ {
98
+ {outer: {foo: 123, bar: 456}} => 'outer[foo]=123&outer[bar]=456',
99
+ {outer: {foo: [1, 2, 3], bar: 'baz'}} => 'outer[foo][]=1&outer[foo][]=2&outer[foo][]=3&outer[bar]=baz',
100
+ }.each_pair do |input, expected|
101
+ expect(RestClient::Utils.encode_query_string(input)).to eq expected
102
+ end
103
+ end
104
+
105
+ it 'handles null and empty values' do
106
+ {
107
+ {string: '', empty: nil, list: [], hash: {}, falsey: false } =>
108
+ 'string=&empty&list&hash&falsey=false',
109
+ }.each_pair do |input, expected|
110
+ expect(RestClient::Utils.encode_query_string(input)).to eq expected
111
+ end
112
+ end
113
+
114
+ it 'handles nested nulls' do
115
+ {
116
+ {foo: {string: '', empty: nil}} => 'foo[string]=&foo[empty]',
117
+ }.each_pair do |input, expected|
118
+ expect(RestClient::Utils.encode_query_string(input)).to eq expected
119
+ end
120
+ end
121
+
122
+ it 'handles deep nesting' do
123
+ {
124
+ {coords: [{x: 1, y: 0}, {x: 2}, {x: 3}]} => 'coords[][x]=1&coords[][y]=0&coords[][x]=2&coords[][x]=3',
125
+ }.each_pair do |input, expected|
126
+ expect(RestClient::Utils.encode_query_string(input)).to eq expected
127
+ end
128
+ end
129
+
130
+ it 'handles multiple fields with the same name using ParamsArray' do
131
+ {
132
+ RestClient::ParamsArray.new([[:foo, 1], [:foo, 2], [:foo, 3]]) => 'foo=1&foo=2&foo=3',
133
+ }.each_pair do |input, expected|
134
+ expect(RestClient::Utils.encode_query_string(input)).to eq expected
135
+ end
136
+ end
137
+
138
+ it 'handles nested ParamsArrays' do
139
+ {
140
+ {foo: RestClient::ParamsArray.new([[:a, 1], [:a, 2]])} => 'foo[a]=1&foo[a]=2',
141
+ RestClient::ParamsArray.new([[:foo, {a: 1}], [:foo, {a: 2}]]) => 'foo[a]=1&foo[a]=2',
142
+ }.each_pair do |input, expected|
143
+ expect(RestClient::Utils.encode_query_string(input)).to eq expected
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,22 @@
1
+ require_relative '../_lib'
2
+
3
+ describe 'RestClient::Windows::RootCerts',
4
+ :if => RestClient::Platform.windows? do
5
+ let(:x509_store) { RestClient::Windows::RootCerts.instance.to_a }
6
+
7
+ it 'should return at least one X509 certificate' do
8
+ expect(x509_store.to_a.size).to be >= 1
9
+ end
10
+
11
+ it 'should return an X509 certificate with a subject' do
12
+ x509 = x509_store.first
13
+
14
+ expect(x509.subject.to_s).to match(/CN=.*/)
15
+ end
16
+
17
+ it 'should return X509 certificate objects' do
18
+ x509_store.each do |cert|
19
+ expect(cert).to be_a(OpenSSL::X509::Certificate)
20
+ end
21
+ end
22
+ end
metadata CHANGED
@@ -1,99 +1,159 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.14
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - REST Client Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-21 00:00:00.000000000 Z
11
+ date: 2017-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: mime-types
14
+ name: webmock
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
20
- type: :runtime
19
+ version: '2.0'
20
+ type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rdoc
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.4.2
33
+ version: '3.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.4.2
40
+ version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: pry
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: webmock
56
+ name: pry-doc
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.4'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.4'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rspec
70
+ name: rdoc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 2.4.2
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '6.0'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 2.4.2
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '6.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rubocop
71
91
  requirement: !ruby/object:Gem::Requirement
72
92
  requirements:
73
93
  - - "~>"
74
94
  - !ruby/object:Gem::Version
75
- version: '2.4'
95
+ version: '0'
76
96
  type: :development
77
97
  prerelease: false
78
98
  version_requirements: !ruby/object:Gem::Requirement
79
99
  requirements:
80
100
  - - "~>"
81
101
  - !ruby/object:Gem::Version
82
- version: '2.4'
102
+ version: '0'
83
103
  - !ruby/object:Gem::Dependency
84
- name: pry
104
+ name: http-cookie
85
105
  requirement: !ruby/object:Gem::Requirement
86
106
  requirements:
87
107
  - - ">="
88
108
  - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
109
+ version: 1.0.2
110
+ - - "<"
111
+ - !ruby/object:Gem::Version
112
+ version: '2.0'
113
+ type: :runtime
91
114
  prerelease: false
92
115
  version_requirements: !ruby/object:Gem::Requirement
93
116
  requirements:
94
117
  - - ">="
95
118
  - !ruby/object:Gem::Version
96
- version: '0'
119
+ version: 1.0.2
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: '2.0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: mime-types
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '1.16'
130
+ - - "<"
131
+ - !ruby/object:Gem::Version
132
+ version: '4.0'
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '1.16'
140
+ - - "<"
141
+ - !ruby/object:Gem::Version
142
+ version: '4.0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: netrc
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '0.8'
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '0.8'
97
157
  description: 'A simple HTTP and REST client for Ruby, inspired by the Sinatra microframework
98
158
  style of specifying actions: get, put, post, delete.'
99
159
  email: rest.client@librelist.com
@@ -101,15 +161,18 @@ executables:
101
161
  - restclient
102
162
  extensions: []
103
163
  extra_rdoc_files:
104
- - README.rdoc
164
+ - README.md
105
165
  - history.md
106
166
  files:
107
167
  - ".gitignore"
108
168
  - ".rspec"
169
+ - ".rubocop-disables.yml"
170
+ - ".rubocop.yml"
109
171
  - ".travis.yml"
110
172
  - AUTHORS
111
173
  - Gemfile
112
- - README.rdoc
174
+ - LICENSE
175
+ - README.md
113
176
  - Rakefile
114
177
  - bin/restclient
115
178
  - history.md
@@ -118,34 +181,49 @@ files:
118
181
  - lib/restclient.rb
119
182
  - lib/restclient/abstract_response.rb
120
183
  - lib/restclient/exceptions.rb
121
- - lib/restclient/net_http_ext.rb
184
+ - lib/restclient/params_array.rb
122
185
  - lib/restclient/payload.rb
123
186
  - lib/restclient/platform.rb
124
187
  - lib/restclient/raw_response.rb
125
188
  - lib/restclient/request.rb
126
189
  - lib/restclient/resource.rb
127
190
  - lib/restclient/response.rb
191
+ - lib/restclient/utils.rb
128
192
  - lib/restclient/version.rb
193
+ - lib/restclient/windows.rb
194
+ - lib/restclient/windows/root_certs.rb
129
195
  - rest-client.gemspec
130
- - spec/abstract_response_spec.rb
131
- - spec/base.rb
132
- - spec/exceptions_spec.rb
196
+ - rest-client.windows.gemspec
197
+ - spec/helpers.rb
198
+ - spec/integration/_lib.rb
133
199
  - spec/integration/capath_digicert/244b5494.0
134
200
  - spec/integration/capath_digicert/81b9768f.0
135
201
  - spec/integration/capath_digicert/README
136
202
  - spec/integration/capath_digicert/digicert.crt
203
+ - spec/integration/capath_verisign/415660c1.0
204
+ - spec/integration/capath_verisign/7651b327.0
205
+ - spec/integration/capath_verisign/README
206
+ - spec/integration/capath_verisign/verisign.crt
137
207
  - spec/integration/certs/digicert.crt
138
208
  - spec/integration/certs/verisign.crt
209
+ - spec/integration/httpbin_spec.rb
210
+ - spec/integration/integration_spec.rb
139
211
  - spec/integration/request_spec.rb
140
- - spec/integration_spec.rb
141
- - spec/master_shake.jpg
142
- - spec/payload_spec.rb
143
- - spec/raw_response_spec.rb
144
- - spec/request2_spec.rb
145
- - spec/request_spec.rb
146
- - spec/resource_spec.rb
147
- - spec/response_spec.rb
148
- - spec/restclient_spec.rb
212
+ - spec/spec_helper.rb
213
+ - spec/unit/_lib.rb
214
+ - spec/unit/abstract_response_spec.rb
215
+ - spec/unit/exceptions_spec.rb
216
+ - spec/unit/master_shake.jpg
217
+ - spec/unit/params_array_spec.rb
218
+ - spec/unit/payload_spec.rb
219
+ - spec/unit/raw_response_spec.rb
220
+ - spec/unit/request2_spec.rb
221
+ - spec/unit/request_spec.rb
222
+ - spec/unit/resource_spec.rb
223
+ - spec/unit/response_spec.rb
224
+ - spec/unit/restclient_spec.rb
225
+ - spec/unit/utils_spec.rb
226
+ - spec/unit/windows/root_certs_spec.rb
149
227
  homepage: https://github.com/rest-client/rest-client
150
228
  licenses:
151
229
  - MIT
@@ -158,35 +236,47 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
236
  requirements:
159
237
  - - ">="
160
238
  - !ruby/object:Gem::Version
161
- version: '0'
239
+ version: 2.0.0
162
240
  required_rubygems_version: !ruby/object:Gem::Requirement
163
241
  requirements:
164
242
  - - ">="
165
243
  - !ruby/object:Gem::Version
166
244
  version: '0'
167
245
  requirements: []
168
- rubygems_version: 3.0.3
246
+ rubyforge_project:
247
+ rubygems_version: 2.6.11
169
248
  signing_key:
170
249
  specification_version: 4
171
250
  summary: Simple HTTP and REST client for Ruby, inspired by microframework syntax for
172
251
  specifying actions.
173
252
  test_files:
174
- - spec/abstract_response_spec.rb
175
- - spec/base.rb
176
- - spec/exceptions_spec.rb
253
+ - spec/helpers.rb
254
+ - spec/integration/_lib.rb
177
255
  - spec/integration/capath_digicert/244b5494.0
178
256
  - spec/integration/capath_digicert/81b9768f.0
179
257
  - spec/integration/capath_digicert/README
180
258
  - spec/integration/capath_digicert/digicert.crt
259
+ - spec/integration/capath_verisign/415660c1.0
260
+ - spec/integration/capath_verisign/7651b327.0
261
+ - spec/integration/capath_verisign/README
262
+ - spec/integration/capath_verisign/verisign.crt
181
263
  - spec/integration/certs/digicert.crt
182
264
  - spec/integration/certs/verisign.crt
265
+ - spec/integration/httpbin_spec.rb
266
+ - spec/integration/integration_spec.rb
183
267
  - spec/integration/request_spec.rb
184
- - spec/integration_spec.rb
185
- - spec/master_shake.jpg
186
- - spec/payload_spec.rb
187
- - spec/raw_response_spec.rb
188
- - spec/request2_spec.rb
189
- - spec/request_spec.rb
190
- - spec/resource_spec.rb
191
- - spec/response_spec.rb
192
- - spec/restclient_spec.rb
268
+ - spec/spec_helper.rb
269
+ - spec/unit/_lib.rb
270
+ - spec/unit/abstract_response_spec.rb
271
+ - spec/unit/exceptions_spec.rb
272
+ - spec/unit/master_shake.jpg
273
+ - spec/unit/params_array_spec.rb
274
+ - spec/unit/payload_spec.rb
275
+ - spec/unit/raw_response_spec.rb
276
+ - spec/unit/request2_spec.rb
277
+ - spec/unit/request_spec.rb
278
+ - spec/unit/resource_spec.rb
279
+ - spec/unit/response_spec.rb
280
+ - spec/unit/restclient_spec.rb
281
+ - spec/unit/utils_spec.rb
282
+ - spec/unit/windows/root_certs_spec.rb