pwned 1.2.0 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e197213ac23ae94598dbf91b7a09fadd740db379d5abefdb8ad7c9623d9514b
4
- data.tar.gz: 960c6e4ab1d856480dbc236059abea531dc747f4a1d59a7e7db52534c2958866
3
+ metadata.gz: b6891bb23ef6923eaad6c5af0b4fa2d36471c9a6903fbb66940720c6a5a69c2b
4
+ data.tar.gz: d138630dcac1204a01adfa731cce9a52ca984b67544f4c0beabe3e51f56d28ed
5
5
  SHA512:
6
- metadata.gz: dede2324974438b89612b443e50c8d7c06fe9b35d3e5c6f36661ad73d28513ebb62eedbc60f0a72d346c935141b96f30b98a6ad21cb2950f45a418c76d33c6b1
7
- data.tar.gz: 32a0659ce0a7b80967ebf68809bf5881623f473ab561dfcba9f131eb86af60b9f0cb4031603c85c295d37f9d7aae10ce03ae3a580c3cc437c486cff099a4f962
6
+ metadata.gz: a89fca08322c92a4866d774dd5d2bce8d495326a99d7dfa8b2e8fe12b43ab3d57c0ed29f9aa8dab5d94ed5c002127701cd57daa43f9a621804232c02a4122d15
7
+ data.tar.gz: 67a0aaf46f9d84ee81b36e39e72d761aa7b08293246d7fec3abb35bb122d38cf2cd17519850b97573d16bbe346680de6478b1a569c47a1600085b4167e7faa51
@@ -0,0 +1 @@
1
+ --output-dir docs
@@ -1,9 +1,14 @@
1
1
  # Changelog for `Pwned`
2
2
 
3
- ## Ongoing [☰](https://github.com/philnash/pwned/compare/v1.1.0...master)
3
+ ## Ongoing [☰](https://github.com/philnash/pwned/compare/v1.2.1...master)
4
4
 
5
5
  ...
6
6
 
7
+ ## 1.2.1 (March 17, 2018) [☰](https://github.com/philnash/pwned/commits/v1.2.1)
8
+
9
+ * Minor updates
10
+ * Validator no longer raises `TypeError` when password is `nil`
11
+
7
12
  ## 1.2.0 (March 15, 2018) [☰](https://github.com/philnash/pwned/commits/v1.2.0)
8
13
 
9
14
  * Major updates
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  An easy, Ruby way to use the Pwned Passwords API.
4
4
 
5
- [![Gem Version](https://badge.fury.io/rb/pwned.svg)](https://rubygems.org/gems/pwned) [![Build Status](https://travis-ci.org/philnash/pwned.svg?branch=master)](https://travis-ci.org/philnash/pwned) [![Maintainability](https://codeclimate.com/github/philnash/pwned/badges/gpa.svg)](https://codeclimate.com/github/philnash/pwned/maintainability)
5
+ [![Gem Version](https://badge.fury.io/rb/pwned.svg)](https://rubygems.org/gems/pwned) [![Build Status](https://travis-ci.org/philnash/pwned.svg?branch=master)](https://travis-ci.org/philnash/pwned) [![Maintainability](https://codeclimate.com/github/philnash/pwned/badges/gpa.svg)](https://codeclimate.com/github/philnash/pwned/maintainability) [![Inline docs](https://inch-ci.org/github/philnash/pwned.svg?branch=master)](https://inch-ci.org/github/philnash/pwned)
6
6
 
7
7
  [API docs](https://philnash.github.io/pwned/) | [GitHub repo](https://github.com/philnash/pwned)
8
8
 
@@ -335,11 +335,72 @@ then the record is marked as invalid.</p>
335
335
  valid or invalid. Alternatively it will run an associated proc or re-raise
336
336
  the original error.</p>
337
337
 
338
+ <p>The validation will short circuit and return with no errors added if the
339
+ password is blank. The <code>Pwned::Password</code> initializer expects the
340
+ password to be a string and will throw a <code>TypeError</code> if it is
341
+ <code>nil</code>. Also, technically the empty string is not a password that
342
+ is reported to be found in data breaches, so returns <code>false</code>,
343
+ short circuiting that using <code>value.blank?</code> saves us a trip to
344
+ the API.</p>
345
+
338
346
 
339
347
  </div>
340
348
  </div>
341
349
  <div class="tags">
350
+ <p class="tag_title">Parameters:</p>
351
+ <ul class="param">
352
+
353
+ <li>
354
+
355
+ <span class='name'>record</span>
356
+
357
+
358
+ <span class='type'>(<tt>ActiveModel::Validations</tt>)</span>
359
+
360
+
361
+
362
+ &mdash;
363
+ <div class='inline'>
364
+ <p>The object being validated</p>
365
+ </div>
366
+
367
+ </li>
342
368
 
369
+ <li>
370
+
371
+ <span class='name'>attribute</span>
372
+
373
+
374
+ <span class='type'>(<tt>Symbol</tt>)</span>
375
+
376
+
377
+
378
+ &mdash;
379
+ <div class='inline'>
380
+ <p>The attribute on the record that is currently being validated.</p>
381
+ </div>
382
+
383
+ </li>
384
+
385
+ <li>
386
+
387
+ <span class='name'>value</span>
388
+
389
+
390
+ <span class='type'>(<tt>String</tt>)</span>
391
+
392
+
393
+
394
+ &mdash;
395
+ <div class='inline'>
396
+ <p>The value of the attribute on the record that is the subject of the
397
+ validation</p>
398
+ </div>
399
+
400
+ </li>
401
+
402
+ </ul>
403
+
343
404
  <p class="tag_title">Since:</p>
344
405
  <ul class="since">
345
406
 
@@ -363,30 +424,32 @@ the original error.</p>
363
424
  <pre class="lines">
364
425
 
365
426
 
366
- 64
367
- 65
368
- 66
369
- 67
370
- 68
371
- 69
372
- 70
373
- 71
374
- 72
375
- 73
376
- 74
377
- 75
378
- 76
379
427
  77
380
428
  78
381
429
  79
382
430
  80
383
431
  81
384
- 82</pre>
432
+ 82
433
+ 83
434
+ 84
435
+ 85
436
+ 86
437
+ 87
438
+ 88
439
+ 89
440
+ 90
441
+ 91
442
+ 92
443
+ 93
444
+ 94
445
+ 95
446
+ 96</pre>
385
447
  </td>
386
448
  <td>
387
- <pre class="code"><span class="info file"># File 'lib/pwned/not_pwned_validator.rb', line 64</span>
449
+ <pre class="code"><span class="info file"># File 'lib/pwned/not_pwned_validator.rb', line 77</span>
388
450
 
389
451
  <span class='kw'>def</span> <span class='id identifier rubyid_validate_each'>validate_each</span><span class='lparen'>(</span><span class='id identifier rubyid_record'>record</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute'>attribute</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
452
+ <span class='kw'>return</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
390
453
  <span class='kw'>begin</span>
391
454
  <span class='id identifier rubyid_pwned_check'>pwned_check</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Pwned.html" title="Pwned (module)">Pwned</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Pwned/Password.html" title="Pwned::Password (class)">Password</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Pwned/Password.html#initialize-instance_method" title="Pwned::Password#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_request_options'>request_options</span><span class='rparen'>)</span>
392
455
  <span class='kw'>if</span> <span class='id identifier rubyid_pwned_check'>pwned_check</span><span class='period'>.</span><span class='id identifier rubyid_pwned_count'>pwned_count</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_threshold'>threshold</span>
@@ -415,7 +478,7 @@ the original error.</p>
415
478
  </div>
416
479
 
417
480
  <div id="footer">
418
- Generated on Wed Mar 14 11:06:58 2018 by
481
+ Generated on Sat Mar 17 09:15:06 2018 by
419
482
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
420
483
  0.9.12 (ruby-2.5.0).
421
484
  </div>
@@ -125,7 +125,7 @@ getting the results for a password.</p>
125
125
 
126
126
  </div>
127
127
  </dt>
128
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>1.1.0</span><span class='tstring_end'>&quot;</span></span></pre></dd>
128
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>1.2.1</span><span class='tstring_end'>&quot;</span></span></pre></dd>
129
129
 
130
130
  </dl>
131
131
 
@@ -503,7 +503,7 @@ getting the results for a password.</p>
503
503
  </div>
504
504
 
505
505
  <div id="footer">
506
- Generated on Wed Mar 14 11:06:58 2018 by
506
+ Generated on Sat Mar 17 09:15:06 2018 by
507
507
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
508
508
  0.9.12 (ruby-2.5.0).
509
509
  </div>
@@ -139,7 +139,7 @@ requests to the Pwned Passwords API.</p>
139
139
  </div>
140
140
 
141
141
  <div id="footer">
142
- Generated on Wed Mar 14 11:06:58 2018 by
142
+ Generated on Sat Mar 17 09:15:06 2018 by
143
143
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
144
144
  0.9.12 (ruby-2.5.0).
145
145
  </div>
@@ -915,7 +915,7 @@ A user agent is provided as requested in the documentation.</p>
915
915
  </div>
916
916
 
917
917
  <div id="footer">
918
- Generated on Wed Mar 14 11:06:58 2018 by
918
+ Generated on Sat Mar 17 09:15:06 2018 by
919
919
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
920
920
  0.9.12 (ruby-2.5.0).
921
921
  </div>
@@ -142,7 +142,7 @@
142
142
  </div>
143
143
 
144
144
  <div id="footer">
145
- Generated on Wed Mar 14 11:06:58 2018 by
145
+ Generated on Sat Mar 17 09:15:06 2018 by
146
146
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
147
147
  0.9.12 (ruby-2.5.0).
148
148
  </div>
@@ -182,7 +182,7 @@ removed</p>
182
182
  </div>
183
183
 
184
184
  <div id="footer">
185
- Generated on Wed Mar 14 11:06:58 2018 by
185
+ Generated on Sat Mar 17 09:15:06 2018 by
186
186
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
187
187
  0.9.12 (ruby-2.5.0).
188
188
  </div>
@@ -152,7 +152,7 @@
152
152
  </div>
153
153
 
154
154
  <div id="footer">
155
- Generated on Wed Mar 14 11:06:57 2018 by
155
+ Generated on Sat Mar 17 09:15:05 2018 by
156
156
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
157
157
  0.9.12 (ruby-2.5.0).
158
158
  </div>
@@ -67,7 +67,9 @@ src="https://badge.fury.io/rb/pwned.svg"></a> <a
67
67
  href="https://travis-ci.org/philnash/pwned"><img
68
68
  src="https://travis-ci.org/philnash/pwned.svg?branch=master"></a> <a
69
69
  href="https://codeclimate.com/github/philnash/pwned/maintainability"><img
70
- src="https://codeclimate.com/github/philnash/pwned/badges/gpa.svg"></a></p>
70
+ src="https://codeclimate.com/github/philnash/pwned/badges/gpa.svg"></a> <a
71
+ href="https://inch-ci.org/github/philnash/pwned"><img
72
+ src="https://inch-ci.org/github/philnash/pwned.svg?branch=master"></a></p>
71
73
 
72
74
  <p><a href="https://philnash.github.io/pwned/">API docs</a> | <a
73
75
  href="https://github.com/philnash/pwned">GitHub repo</a></p>
@@ -282,7 +284,7 @@ of conduct</a>.</p>
282
284
  </div></div>
283
285
 
284
286
  <div id="footer">
285
- Generated on Wed Mar 14 11:06:58 2018 by
287
+ Generated on Sat Mar 17 09:15:05 2018 by
286
288
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
287
289
  0.9.12 (ruby-2.5.0).
288
290
  </div>
@@ -67,7 +67,9 @@ src="https://badge.fury.io/rb/pwned.svg"></a> <a
67
67
  href="https://travis-ci.org/philnash/pwned"><img
68
68
  src="https://travis-ci.org/philnash/pwned.svg?branch=master"></a> <a
69
69
  href="https://codeclimate.com/github/philnash/pwned/maintainability"><img
70
- src="https://codeclimate.com/github/philnash/pwned/badges/gpa.svg"></a></p>
70
+ src="https://codeclimate.com/github/philnash/pwned/badges/gpa.svg"></a> <a
71
+ href="https://inch-ci.org/github/philnash/pwned"><img
72
+ src="https://inch-ci.org/github/philnash/pwned.svg?branch=master"></a></p>
71
73
 
72
74
  <p><a href="https://philnash.github.io/pwned/">API docs</a> | <a
73
75
  href="https://github.com/philnash/pwned">GitHub repo</a></p>
@@ -282,7 +284,7 @@ of conduct</a>.</p>
282
284
  </div></div>
283
285
 
284
286
  <div id="footer">
285
- Generated on Wed Mar 14 11:06:58 2018 by
287
+ Generated on Sat Mar 17 09:15:05 2018 by
286
288
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
287
289
  0.9.12 (ruby-2.5.0).
288
290
  </div>
@@ -102,7 +102,7 @@
102
102
  </div>
103
103
 
104
104
  <div id="footer">
105
- Generated on Wed Mar 14 11:06:58 2018 by
105
+ Generated on Sat Mar 17 09:15:05 2018 by
106
106
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
107
107
  0.9.12 (ruby-2.5.0).
108
108
  </div>
@@ -61,7 +61,21 @@ class NotPwnedValidator < ActiveModel::EachValidator
61
61
  # In the case of an API error the validator will either mark the
62
62
  # record as valid or invalid. Alternatively it will run an associated proc or
63
63
  # re-raise the original error.
64
+ #
65
+ # The validation will short circuit and return with no errors added if the
66
+ # password is blank. The +Pwned::Password+ initializer expects the password to
67
+ # be a string and will throw a +TypeError+ if it is +nil+. Also, technically
68
+ # the empty string is not a password that is reported to be found in data
69
+ # breaches, so returns +false+, short circuiting that using +value.blank?+
70
+ # saves us a trip to the API.
71
+ #
72
+ # @param record [ActiveModel::Validations] The object being validated
73
+ # @param attribute [Symbol] The attribute on the record that is currently
74
+ # being validated.
75
+ # @param value [String] The value of the attribute on the record that is the
76
+ # subject of the validation
64
77
  def validate_each(record, attribute, value)
78
+ return if value.blank?
65
79
  begin
66
80
  pwned_check = Pwned::Password.new(value, request_options)
67
81
  if pwned_check.pwned_count > threshold
@@ -3,5 +3,5 @@
3
3
  module Pwned
4
4
  ##
5
5
  # The current version of the +pwned+ gem.
6
- VERSION = "1.2.0"
6
+ VERSION = "1.2.1"
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwned
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phil Nash
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-15 00:00:00.000000000 Z
11
+ date: 2018-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -90,6 +90,7 @@ files:
90
90
  - ".gitignore"
91
91
  - ".rspec"
92
92
  - ".travis.yml"
93
+ - ".yardopts"
93
94
  - CHANGELOG.md
94
95
  - CODE_OF_CONDUCT.md
95
96
  - Gemfile