oplop 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe387253f3e7471b962a13a3f4f9f6adf74779a51967b267cebb1cdb2262345c
4
- data.tar.gz: 04ebb187af0d95379363d07af159e85b5a6cbbbca711ee2f131e8193e3805ba1
3
+ metadata.gz: da687d83f164bc06c61d8013127d72fd41ae7bc3974c5f6976fba4b1dbf1cce3
4
+ data.tar.gz: ae5d3252688c2f38766ef9d31d078723c394a8c28021c7b1ce85aa717484f0c3
5
5
  SHA512:
6
- metadata.gz: 82b7ec63eaabe9d9b3aee0b00631a4d7f8fb74d8a2273418c76e84f39995cd7dd68f4e67b0660d5221767df7faa27aea5476d76f583f0609cf7c9bf0f6ee39bb
7
- data.tar.gz: f31f3e781ae750b59f91e46577c2631c755ddde0f3831adf16988985cca245070cae97dfae53427cd3dedf94a7b771ead7f5bd008f27a3100fce415a2a3d246d
6
+ metadata.gz: d55f5ecc8bcc8d2132b647893c86300b1bfc49221183e4e4164fd463cd2f66a16d5fba7880f3aba7c23d0c21a50a4ede2ac4d6fed2d1281e95a382edcd0bb57d
7
+ data.tar.gz: 9be6c692c906b38ec9dfc584a4aab1f68cdeec303b18df6d09f586eed6ed4732dea9288d7c4af0defac44e2e27717ca9cf9b83f76280ef6f9de364679683d069
data/README.md CHANGED
@@ -19,21 +19,21 @@ prefix for specifying length.
19
19
  These will all produce the same password with the new default 16 character length:
20
20
 
21
21
  ```ruby
22
- Oplop.password(:master => "master-password", :label => "nickname")
23
- Oplop.password(:master => "master-password", :label => "16*nickname")
24
- Oplop.password(:master => "master-password", :label => "nickname", :length => 16)
22
+ Oplop::V1.password(:master => "master-password", :label => "nickname")
23
+ Oplop::V1.password(:master => "master-password", :label => "16*nickname")
24
+ Oplop::V1.password(:master => "master-password", :label => "nickname", :length => 16)
25
25
  ```
26
26
 
27
27
  These will all produce the same password with the legacy 8 character length:
28
28
  ```
29
- Oplop.password(:master => "master-password", :label => "*nickname")
30
- Oplop.password(:master => "master-password", :label => "8*nickname")
31
- Oplop.password(:master => "master-password", :label => "nickname", :length => 8)
29
+ Oplop::V1.password(:master => "master-password", :label => "*nickname")
30
+ Oplop::V1.password(:master => "master-password", :label => "8*nickname")
31
+ Oplop::V1.password(:master => "master-password", :label => "nickname", :length => 8)
32
32
  ```
33
33
 
34
34
  This is a 20-character password
35
35
  ```
36
- Oplop.password(:master => "master-password", :label => "20*nickname")
36
+ Oplop::V1.password(:master => "master-password", :label => "20*nickname")
37
37
  ```
38
38
 
39
39
  CLI
data/bin/oplop CHANGED
@@ -53,7 +53,7 @@ if options[:new]
53
53
  end
54
54
  end
55
55
 
56
- password = Oplop.password(:label => label, :master => master, :length => Oplop::LEGACY_LENGTH)
56
+ password = Oplop::V1.password(:label => label, :master => master, :length => Oplop::V1::LEGACY_LENGTH)
57
57
 
58
58
  if options[:verbose]
59
59
  puts "\n Password for #{label}:\t#{password}\n\n"
data/lib/oplop/cli.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'open3'
2
2
 
3
- class Oplop
3
+ module Oplop
4
4
  module Cli
5
5
 
6
6
  def self.banner
data/lib/oplop/v1.rb ADDED
@@ -0,0 +1,47 @@
1
+ require 'digest/md5'
2
+ require 'base64'
3
+
4
+ module Oplop
5
+ class V1
6
+ attr_reader :master, :label, :length
7
+
8
+ LEGACY_LENGTH = 8
9
+ DEFAULT_LENGTH = 16
10
+
11
+ def self.password(args={})
12
+ self.new(args).password
13
+ end
14
+
15
+ def initialize(args={})
16
+ @master = args[:master]
17
+ @label = args[:label]
18
+ @length = args[:length] || DEFAULT_LENGTH
19
+
20
+ if @label =~ /^([0-9]*)?\*/
21
+ (@length, @label) = @label.split('*')
22
+ @length = length.to_i
23
+ @length = LEGACY_LENGTH if length <= 0
24
+ end
25
+ end
26
+
27
+ def master_label
28
+ @master_label ||= '%s%s' % [ master, label ]
29
+ end
30
+
31
+ def password
32
+ password = Base64.urlsafe_encode64(Digest::MD5.digest(master_label))
33
+
34
+ if password.respond_to?(:encode)
35
+ password = password.encode('UTF-8')
36
+ end
37
+
38
+ if m = password.match(/\d+/)
39
+ password = '%s%s' % [ m[0], password ] if (m.begin(0) >= length)
40
+ else
41
+ password = '1%s' % password
42
+ end
43
+
44
+ password[0,length]
45
+ end
46
+ end
47
+ end
data/lib/oplop/version.rb CHANGED
@@ -1,3 +1,3 @@
1
- class Oplop
2
- VERSION = "2.0.0"
1
+ module Oplop
2
+ VERSION = "2.1.0"
3
3
  end
data/lib/oplop.rb CHANGED
@@ -1,45 +1,3 @@
1
- require 'digest/md5'
2
- require 'base64'
1
+ module Oplop; end
3
2
 
4
- class Oplop
5
- attr_reader :master, :label, :length
6
-
7
- LEGACY_LENGTH = 8
8
- DEFAULT_LENGTH = 16
9
-
10
- def self.password(args={})
11
- self.new(args).password
12
- end
13
-
14
- def initialize(args={})
15
- @master = args[:master]
16
- @label = args[:label]
17
- @length = args[:length] || DEFAULT_LENGTH
18
-
19
- if @label =~ /^([0-9]*)?\*/
20
- (@length, @label) = @label.split('*')
21
- @length = length.to_i
22
- @length = LEGACY_LENGTH if length <= 0
23
- end
24
- end
25
-
26
- def master_label
27
- @master_label ||= '%s%s' % [ master, label ]
28
- end
29
-
30
- def password
31
- password = Base64.urlsafe_encode64(Digest::MD5.digest(master_label))
32
-
33
- if password.respond_to?(:encode)
34
- password = password.encode('UTF-8')
35
- end
36
-
37
- if m = password.match(/\d+/)
38
- password = '%s%s' % [ m[0], password ] if (m.begin(0) >= length)
39
- else
40
- password = '1%s' % password
41
- end
42
-
43
- password[0,length]
44
- end
45
- end
3
+ require 'oplop/v1'
data/oplop.gemspec CHANGED
@@ -15,11 +15,11 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.rubyforge_project = "oplop"
17
17
 
18
- s.add_dependency 'highline', '~> 1.6'
18
+ s.add_dependency 'highline', '~> 2.0'
19
19
 
20
- s.add_development_dependency 'rake', '~> 10.1'
21
- s.add_development_dependency 'rspec', '~> 2.14'
22
- s.add_development_dependency 'yajl-ruby', '~> 1.2'
20
+ s.add_development_dependency 'rake', '~> 13.0'
21
+ s.add_development_dependency 'rspec', '~> 3.11'
22
+ s.add_development_dependency 'yajl-ruby', '~> 1.4'
23
23
 
24
24
  s.files = `git ls-files`.split("\n")
25
25
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
data/spec/oplop_spec.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Oplop do
3
+ describe Oplop::V1 do
4
4
  describe ".password" do
5
5
  context "tests from testdata.json (see Python implementation at http://code.google.com/p/oplop/)" do
6
6
  # loop around each "case" in testdata.yml
7
- Yajl::Parser.new.parse(File.new(File.dirname(__FILE__) + "/testdata.json", 'r')).each do |testdata|
7
+ Yajl::Parser.new.parse(File.new(File.dirname(__FILE__) + "/testdata/v1.json", 'r')).each do |testdata|
8
8
  specify testdata["why"] do
9
- password = Oplop.password(:master => testdata["master"], :label => "*" + testdata["label"])
9
+ password = Oplop::V1.password(:master => testdata["master"], :label => "*" + testdata["label"])
10
10
  expect(password).to eq testdata["password"]
11
11
 
12
- password = Oplop.password(:master => testdata["master"], :length => 8, :label => testdata["label"])
12
+ password = Oplop::V1.password(:master => testdata["master"], :length => 8, :label => testdata["label"])
13
13
  expect(password).to eq testdata["password"]
14
14
  end
15
15
  end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oplop
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Kaney
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-09 00:00:00.000000000 Z
11
+ date: 2022-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '2.0'
20
20
  type: :runtime
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.6'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.1'
33
+ version: '13.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: '10.1'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.14'
47
+ version: '3.11'
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: '2.14'
54
+ version: '3.11'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: yajl-ruby
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.2'
61
+ version: '1.4'
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.2'
68
+ version: '1.4'
69
69
  description: Provides a ruby library and command line tool for Oplop
70
70
  email:
71
71
  - brian@vermonster.com
@@ -84,17 +84,18 @@ files:
84
84
  - bin/oplop
85
85
  - lib/oplop.rb
86
86
  - lib/oplop/cli.rb
87
+ - lib/oplop/v1.rb
87
88
  - lib/oplop/version.rb
88
89
  - oplop.gemspec
89
90
  - shippable.yml
90
91
  - spec/oplop_spec.rb
91
92
  - spec/spec_helper.rb
92
- - spec/testdata.json
93
+ - spec/testdata/v1.json
93
94
  homepage: http://github.com/bkaney/oplop
94
95
  licenses:
95
96
  - MIT
96
97
  metadata: {}
97
- post_install_message:
98
+ post_install_message:
98
99
  rdoc_options: []
99
100
  require_paths:
100
101
  - lib
@@ -109,12 +110,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
110
  - !ruby/object:Gem::Version
110
111
  version: '0'
111
112
  requirements: []
112
- rubyforge_project: oplop
113
- rubygems_version: 2.7.3
114
- signing_key:
113
+ rubygems_version: 3.3.7
114
+ signing_key:
115
115
  specification_version: 4
116
116
  summary: Oplop for Ruby
117
117
  test_files:
118
118
  - spec/oplop_spec.rb
119
119
  - spec/spec_helper.rb
120
- - spec/testdata.json
120
+ - spec/testdata/v1.json