rest-client 2.0.2-x86-mingw32 → 2.1.0.rc1-x86-mingw32

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e42274691118daa3db14a998c6d3f37850312300
4
- data.tar.gz: 67846732a7926b335a7082eb1fba0b7178f0c5c4
3
+ metadata.gz: afbca4670d0f460397ffc00cb402585429b90d47
4
+ data.tar.gz: efde23cfc811c084a5a34e1b6584bac05871b500
5
5
  SHA512:
6
- metadata.gz: 824004c1bff42cacda66c9ba1027b7e4be99fc43af327458f26ceca6eb01fbc5edb201f825ab1744e6438fb614955227cbd1f08225fe8a4df9763b37ea2d2894
7
- data.tar.gz: 812f11c8a6c2c4ac5ec68852e75f64ae2d7416ae4683f5ff6525055dbf8e472baed3cc01a85eb76e5da2cb39233ff2dc2129cbdab7165dec89637987b346359b
6
+ metadata.gz: cf4bb76343464079a6f33ac6e3738afefe578e6b6012d7b98156a1bddb671dda86a4f40605ee004e0d8766b64dc992bf366bc48344671616a3cfd8b0c037ea0b
7
+ data.tar.gz: 8ba37282e55441392e706a70d25ad73c2b24166d378167ae29e3389fd092c9f344248aaa2aab0d81d4f250e9240f8cd75cd10739fb09984e4293cf0ceac1d9e1
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg
7
7
  /rdoc
8
8
  /.yardoc
9
+ /tmp
@@ -0,0 +1,10 @@
1
+ Blake Mizerany <blake.mizerany@gmail.com>
2
+ Lawrence Leonard Gilbert <larry@l2g.to>
3
+ <larry@l2g.to> <larry@L2G.to>
4
+ Marc-André Cournoyer <macournoyer@gmail.com>
5
+ Matthew Manning <matt.manning@gmail.com>
6
+ Nicholas Wieland <nicholas.wieland@gmail.com>
7
+ Rafael Ssouza <rafael.ssouza@gmail.com>
8
+ Richard Schneeman <richard.schneeman@gmail.com>
9
+ Rick Olson <technoweenie@gmail.com>
10
+ T. Watanabe <wtnabe@wt-srv.watanabe>
@@ -0,0 +1,2 @@
1
+ --display-cop-names
2
+ --fail-level=W
@@ -17,7 +17,7 @@ Lint/StringConversionInInterpolation:
17
17
  Lint/UnusedBlockArgument:
18
18
  Enabled: false
19
19
 
20
- Lint/Eval:
20
+ Security/Eval:
21
21
  Exclude:
22
22
  - rest-client.windows.gemspec
23
23
 
@@ -110,10 +110,8 @@ Style/ConstantName:
110
110
  Metrics/CyclomaticComplexity:
111
111
  Max: 22
112
112
 
113
- # Offense count: 1
114
- # Cop supports --auto-correct.
115
- Style/DeprecatedHashMethods:
116
- Enabled: false
113
+ Style/PreferredHashMethods:
114
+ EnforcedStyle: verbose
117
115
 
118
116
  # TODO: docs
119
117
  # Offense count: 17
@@ -122,7 +120,7 @@ Style/Documentation:
122
120
 
123
121
  # Offense count: 9
124
122
  # Configuration parameters: EnforcedStyle, SupportedStyles.
125
- Style/DotPosition:
123
+ Layout/DotPosition:
126
124
  Enabled: false
127
125
 
128
126
  # Offense count: 1
@@ -136,24 +134,27 @@ Style/EachWithObject:
136
134
 
137
135
  # Offense count: 5
138
136
  # Cop supports --auto-correct.
139
- Style/EmptyLines:
137
+ Layout/EmptyLines:
140
138
  Enabled: false
141
139
 
142
140
  # Offense count: 11
143
141
  # Cop supports --auto-correct.
144
142
  # Configuration parameters: EnforcedStyle, SupportedStyles.
145
- Style/EmptyLinesAroundClassBody:
143
+ Layout/EmptyLinesAroundClassBody:
146
144
  Enabled: false
147
145
 
148
146
  # Offense count: 1
149
147
  # Cop supports --auto-correct.
150
- Style/EmptyLinesAroundMethodBody:
148
+ Layout/EmptyLinesAroundMethodBody:
151
149
  Enabled: false
152
150
 
153
151
  # Offense count: 9
154
152
  # Cop supports --auto-correct.
155
153
  # Configuration parameters: EnforcedStyle, SupportedStyles.
156
- Style/EmptyLinesAroundModuleBody:
154
+ Layout/EmptyLinesAroundModuleBody:
155
+ Enabled: false
156
+
157
+ Layout/EmptyLinesAroundExceptionHandlingKeywords:
157
158
  Enabled: false
158
159
 
159
160
  # Offense count: 31
@@ -188,7 +189,7 @@ Style/IfUnlessModifier:
188
189
  # Offense count: 6
189
190
  # Cop supports --auto-correct.
190
191
  # Configuration parameters: EnforcedStyle, SupportedStyles.
191
- Style/IndentHash:
192
+ Layout/IndentHash:
192
193
  Enabled: false
193
194
 
194
195
  # NOTABUG
@@ -199,14 +200,13 @@ Style/Lambda:
199
200
  # TODO
200
201
  # Offense count: 14
201
202
  # Cop supports --auto-correct.
202
- Style/LeadingCommentSpace:
203
+ Layout/LeadingCommentSpace:
203
204
  Enabled: false
204
205
 
205
- # TODO
206
- # Offense count: 218
207
- # Configuration parameters: AllowURI.
208
206
  Metrics/LineLength:
209
- Max: 340
207
+ Exclude:
208
+ - 'spec/**/*.rb'
209
+ - 'Rakefile'
210
210
 
211
211
  # TODO
212
212
  # Offense count: 28
@@ -298,47 +298,50 @@ Style/SignalException:
298
298
  # TODO
299
299
  # Offense count: 2
300
300
  # Cop supports --auto-correct.
301
- Style/SpaceAfterNot:
301
+ Layout/SpaceAfterNot:
302
302
  Enabled: false
303
303
 
304
304
  # Offense count: 19
305
305
  # Cop supports --auto-correct.
306
306
  # Configuration parameters: EnforcedStyle, SupportedStyles.
307
- Style/SpaceAroundEqualsInParameterDefault:
307
+ Layout/SpaceAroundEqualsInParameterDefault:
308
308
  Enabled: false
309
309
 
310
310
  # Offense count: 20
311
311
  # Cop supports --auto-correct.
312
- Style/SpaceAroundOperators:
312
+ Layout/SpaceAroundOperators:
313
313
  Enabled: false
314
314
 
315
315
  # Offense count: 9
316
316
  # Cop supports --auto-correct.
317
317
  # Configuration parameters: EnforcedStyle, SupportedStyles.
318
- Style/SpaceBeforeBlockBraces:
318
+ Layout/SpaceBeforeBlockBraces:
319
+ Enabled: false
320
+
321
+ Layout/EmptyLinesAroundBlockBody:
319
322
  Enabled: false
320
323
 
321
324
  # Offense count: 37
322
325
  # Cop supports --auto-correct.
323
326
  # Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
324
- Style/SpaceInsideBlockBraces:
327
+ Layout/SpaceInsideBlockBraces:
325
328
  Enabled: false
326
329
 
327
330
  # Offense count: 6
328
331
  # Cop supports --auto-correct.
329
- Style/SpaceInsideBrackets:
332
+ Layout/SpaceInsideBrackets:
330
333
  Enabled: false
331
334
 
332
335
  # Offense count: 181
333
336
  # Cop supports --auto-correct.
334
337
  # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SupportedStyles.
335
- Style/SpaceInsideHashLiteralBraces:
338
+ Layout/SpaceInsideHashLiteralBraces:
336
339
  Enabled: false
337
340
 
338
341
  # TODO
339
342
  # Offense count: 9
340
343
  # Cop supports --auto-correct.
341
- Style/SpaceInsideParens:
344
+ Layout/SpaceInsideParens:
342
345
  Enabled: false
343
346
 
344
347
  # Offense count: 414
@@ -1,3 +1,8 @@
1
1
  ---
2
2
  inherit_from:
3
3
  - .rubocop-disables.yml
4
+
5
+ AllCops:
6
+ Exclude:
7
+ - 'tmp/*.rb'
8
+ - 'vendor/**/*'
@@ -20,7 +20,8 @@ rvm:
20
20
  cache: bundler
21
21
 
22
22
  script:
23
- bundle exec rake test
23
+ - bundle exec rake test
24
+ - bundle exec rake rubocop
24
25
 
25
26
  branches:
26
27
  except:
data/AUTHORS CHANGED
@@ -7,6 +7,7 @@ Adrian Rangel
7
7
  Alex Tomlins
8
8
  Aman Gupta
9
9
  Andy Brody
10
+ Avi Deitcher
10
11
  Blake Mizerany
11
12
  Brad Ediger
12
13
  Braintree
@@ -38,10 +39,12 @@ Harm Aarts
38
39
  Hiro Asari
39
40
  Hugh McGowan
40
41
  Ian Warshak
42
+ Igor Zubkov
41
43
  Ivan Makfinsky
42
44
  JH. Chabran
43
45
  James Edward Gray II
44
46
  Jari Bakken
47
+ Jeff Pereira
45
48
  Jeff Remer
46
49
  Jeffrey Hardy
47
50
  Jeremy Kemper
@@ -59,12 +62,14 @@ Keith Rarick
59
62
  Kenichi Kamiya
60
63
  Kevin Read
61
64
  Kosuke Asami
65
+ Kyle Meyer
62
66
  Kyle VanderBeek
63
67
  Lars Gierth
64
68
  Lawrence Leonard Gilbert
65
69
  Lee Jarvis
66
70
  Lennon Day-Reynolds
67
71
  Lin Jen-Shin
72
+ Magne Matre Gåsland
68
73
  Marc-André Cournoyer
69
74
  Marius Butuc
70
75
  Matthew Manning
@@ -77,6 +82,7 @@ Nicholas Wieland
77
82
  Nick Hammond
78
83
  Nick Plante
79
84
  Niko Dittmann
85
+ Nikolay Shebanov
80
86
  Oscar Del Ben
81
87
  Pablo Astigarraga
82
88
  Paul Dlug
@@ -85,9 +91,11 @@ Pedro Chambino
85
91
  Philip Corliss
86
92
  Pierre-Louis Gottfrois
87
93
  Rafael Ssouza
94
+ Richard Schneeman
88
95
  Rick Olson
89
96
  Robert Eanes
90
97
  Rodrigo Panachi
98
+ Sam Norbury
91
99
  Samuel Cochran
92
100
  Syl Turner
93
101
  T. Watanabe
data/README.md CHANGED
@@ -39,6 +39,7 @@ The rest-client gem depends on these other gems for usage at runtime:
39
39
 
40
40
  * [mime-types](http://rubygems.org/gems/mime-types)
41
41
  * [netrc](http://rubygems.org/gems/netrc)
42
+ * [http-accept](https://rubygems.org/gems/http-accept)
42
43
  * [http-cookie](https://rubygems.org/gems/http-cookie)
43
44
 
44
45
  There are also several development dependencies. It's recommended to use
@@ -359,7 +360,7 @@ RestClient.get('http://example.com/resource') { |response, request, result, &blo
359
360
  when 423
360
361
  raise SomeCustomExceptionIfYouWant
361
362
  else
362
- response.return!(request, result, &block)
363
+ response.return!(&block)
363
364
  end
364
365
  }
365
366
  ```
@@ -446,6 +447,106 @@ You can:
446
447
 
447
448
  See `RestClient::Request`'s documentation for more information.
448
449
 
450
+ ### Streaming request payload
451
+
452
+ RestClient will try to stream any file-like payload rather than reading it into
453
+ memory. This happens through `RestClient::Payload::Streamed`, which is
454
+ automatically called internally by `RestClient::Payload.generate` on anything
455
+ with a `read` method.
456
+
457
+ ```ruby
458
+ >> r = RestClient.put('http://httpbin.org/put', File.open('/tmp/foo.txt', 'r'),
459
+ content_type: 'text/plain')
460
+ => <RestClient::Response 200 "{\n \"args\":...">
461
+ ```
462
+
463
+ In Multipart requests, RestClient will also stream file handles passed as Hash
464
+ (or __new in 2.1__ ParamsArray).
465
+
466
+ ```ruby
467
+ >> r = RestClient.put('http://httpbin.org/put',
468
+ {file_a: File.open('a.txt', 'r'),
469
+ file_b: File.open('b.txt', 'r')})
470
+ => <RestClient::Response 200 "{\n \"args\":...">
471
+
472
+ # received by server as two file uploads with multipart/form-data
473
+ >> JSON.parse(r)['files'].keys
474
+ => ['file_a', 'file_b']
475
+ ```
476
+
477
+ ### Streaming responses
478
+
479
+ Normally, when you use `RestClient.get` or the lower level
480
+ `RestClient::Request.execute method: :get` to retrieve data, the entire
481
+ response is buffered in memory and returned as the response to the call.
482
+
483
+ However, if you are retrieving a large amount of data, for example a Docker
484
+ image, an iso, or any other large file, you may want to stream the response
485
+ directly to disk rather than loading it in memory. If you have a very large
486
+ file, it may become *impossible* to load it into memory.
487
+
488
+ There are two main ways to do this:
489
+
490
+ #### `raw_response`, saves into Tempfile
491
+
492
+ If you pass `raw_response: true` to `RestClient::Request.execute`, it will save
493
+ the response body to a temporary file (using `Tempfile`) and return a
494
+ `RestClient::RawResponse` object rather than a `RestClient::Response`.
495
+
496
+ Note that the tempfile created by `Tempfile.new` will be in `Dir.tmpdir`
497
+ (usually `/tmp/`), which you can override to store temporary files in a
498
+ different location. This file will be unlinked when it is dereferenced.
499
+
500
+ If logging is enabled, this will also print download progress.
501
+ __New in 2.1:__ Customize the interval with `:stream_log_percent` (defaults to
502
+ 10 for printing a message every 10% complete).
503
+
504
+ For example:
505
+
506
+ ```ruby
507
+ >> raw = RestClient::Request.execute(
508
+ method: :get,
509
+ url: 'http://releases.ubuntu.com/16.04.2/ubuntu-16.04.2-desktop-amd64.iso',
510
+ raw_response: true)
511
+ => <RestClient::RawResponse @code=200, @file=#<Tempfile:/tmp/rest-client.20170522-5346-1pptjm1>, @request=<RestClient::Request @method="get", @url="http://releases.ubuntu.com/16.04.2/ubuntu-16.04.2-desktop-amd64.iso">>
512
+ >> raw.file.size
513
+ => 1554186240
514
+ >> raw.file.path
515
+ => "/tmp/rest-client.20170522-5346-1pptjm1"
516
+ raw.file.path
517
+ => "/tmp/rest-client.20170522-5346-1pptjm1"
518
+
519
+ >> require 'digest/sha1'
520
+ >> Digest::SHA1.file(raw.file.path).hexdigest
521
+ => "4375b73e3a1aa305a36320ffd7484682922262b3"
522
+ ```
523
+
524
+ #### `block_response`, receives raw Net::HTTPResponse
525
+
526
+ If you want to stream the data from the response to a file as it comes, rather
527
+ than entirely in memory, you can also pass `RestClient::Request.execute` a
528
+ parameter `:block_response` to which you pass a block/proc. This block receives
529
+ the raw unmodified Net::HTTPResponse object from Net::HTTP, which you can use
530
+ to stream directly to a file as each chunk is received.
531
+
532
+ Note that this bypasses all the usual HTTP status code handling, so you will
533
+ want to do you own checking for HTTP 20x response codes, redirects, etc.
534
+
535
+ The following is an example:
536
+
537
+ ````ruby
538
+ File.open('/some/output/file', 'w') {|f|
539
+ block = proc { |response|
540
+ response.read_body do |chunk|
541
+ f.write chunk
542
+ end
543
+ }
544
+ RestClient::Request.execute(method: :get,
545
+ url: 'http://example.com/some/really/big/file.img',
546
+ block_response: block)
547
+ }
548
+ ````
549
+
449
550
  ## Shell
450
551
 
451
552
  The restclient shell command gives an IRB session with RestClient already loaded:
@@ -498,7 +599,7 @@ $ restclient put http://example.com/resource < input_body
498
599
 
499
600
  ## Logging
500
601
 
501
- To enable logging you can:
602
+ To enable logging globally you can:
502
603
 
503
604
  - set RestClient.log with a Ruby Logger, or
504
605
  - set an environment variable to avoid modifying the code (in this case you can use a file name, "stdout" or "stderr"):
@@ -506,7 +607,19 @@ To enable logging you can:
506
607
  ```ruby
507
608
  $ RESTCLIENT_LOG=stdout path/to/my/program
508
609
  ```
509
- Either produces logs like this:
610
+
611
+ You can also set individual loggers when instantiating a Resource or making an
612
+ individual request:
613
+
614
+ ```ruby
615
+ resource = RestClient::Resource.new 'http://example.com/resource', log: Logger.new(STDOUT)
616
+ ```
617
+
618
+ ```ruby
619
+ RestClient::Request.execute(method: :get, url: 'http://example.com/foo', log: Logger.new(STDERR))
620
+ ```
621
+
622
+ All options produce logs like this:
510
623
 
511
624
  ```ruby
512
625
  RestClient.get "http://some/resource"
@@ -774,11 +887,10 @@ See AUTHORS for the full list.
774
887
 
775
888
  ## Legal
776
889
 
777
- Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
890
+ Released under the MIT License: https://opensource.org/licenses/MIT
778
891
 
779
- "Master Shake" photo (http://www.flickr.com/photos/solgrundy/924205581/) by
780
- "SolGrundy"; used under terms of the Creative Commons Attribution-ShareAlike 2.0
781
- Generic license (http://creativecommons.org/licenses/by-sa/2.0/)
892
+ Photo of the International Space Station was produced by NASA and is in the
893
+ public domain.
782
894
 
783
895
  Code for reading Windows root certificate store derived from work by Puppet;
784
896
  used under terms of the Apache License, Version 2.0.
data/Rakefile CHANGED
@@ -38,12 +38,11 @@ desc 'Regenerate authors file'
38
38
  task :authors do
39
39
  Dir.chdir(File.dirname(__FILE__)) do
40
40
  File.open('AUTHORS', 'w') do |f|
41
- f.write( <<-EOM
41
+ f.write <<-EOM
42
42
  The Ruby REST Client would not be what it is today without the help of
43
43
  the following kind souls:
44
44
 
45
45
  EOM
46
- )
47
46
  end
48
47
 
49
48
  sh 'git shortlog -s | cut -f 2 >> AUTHORS'
@@ -70,8 +69,8 @@ namespace :all do
70
69
  task :build => ['ruby:build'] + \
71
70
  WindowsPlatforms.map {|p| "windows:#{p}:build"}
72
71
 
73
- desc "Create tag v#{RestClient::VERSION} and for all platforms build and push " \
74
- "rest-client #{RestClient::VERSION} to Rubygems"
72
+ desc "Create tag v#{RestClient::VERSION} and for all platforms build and " \
73
+ "push rest-client #{RestClient::VERSION} to Rubygems"
75
74
  task :release => ['build', 'ruby:release'] + \
76
75
  WindowsPlatforms.map {|p| "windows:#{p}:push"}
77
76
 
@@ -130,3 +129,12 @@ Rake::RDocTask.new do |t|
130
129
  t.rdoc_files.include('README.md')
131
130
  t.rdoc_files.include('lib/*.rb')
132
131
  end
132
+
133
+ ############################
134
+
135
+ require 'rubocop/rake_task'
136
+
137
+ RuboCop::RakeTask.new(:rubocop) do |t|
138
+ t.options = ['--display-cop-names']
139
+ end
140
+ alias_task(:lint, :rubocop)