adequate_crypto_address 0.1.5 → 0.1.8
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 +4 -4
- data/Makefile +1 -1
- data/README.md +2 -0
- data/adequate_crypto_address.gemspec +4 -6
- data/lib/adequate_crypto_address/eth.rb +1 -1
- data/lib/adequate_crypto_address/ton.rb +30 -0
- data/lib/adequate_crypto_address/version.rb +1 -1
- data/lib/adequate_crypto_address/xmr.rb +35 -0
- data/lib/adequate_crypto_address.rb +2 -0
- data/spec/adequate_crypto_address_spec.rb +30 -0
- metadata +17 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 454d13bbd68af39b638c32a2ec39e2b0d94f71a0c5479cb01a3f0f00fd89abe0
|
4
|
+
data.tar.gz: 0b6fc0a2ea85706723f8242514d5703a62720be74ab9e0d8379b61f17b4f369f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b82dd552389025f66a26671515b43974ec9dbd442f7556c8e179fac8c0743f059ce0bd1a9706d750821dc7a151e91e6286c489f69cdb3a9c7bae20532937cd0
|
7
|
+
data.tar.gz: f5ff8a4f9c8de4da94f28247c8f9a24ddbbdf1294e064c98056e96a84b7b2dce11e123830b02be08a271c36bd4f280ca1d8486b11c70f2346d84781e3eefad73
|
data/Makefile
CHANGED
data/README.md
CHANGED
@@ -8,7 +8,6 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.name = 'adequate_crypto_address'
|
9
9
|
spec.version = AdequateCryptoAddress::VERSION
|
10
10
|
spec.authors = ['vtm']
|
11
|
-
spec.email = ['vtmilyakov@yandex.ru']
|
12
11
|
|
13
12
|
spec.summary = 'A Ruby Library for dealing with validation cryptocurrency adresses.'
|
14
13
|
spec.description = 'A Ruby Library for dealing with validation cryptocurrency adresses.'
|
@@ -18,9 +17,8 @@ Gem::Specification.new do |spec|
|
|
18
17
|
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
19
18
|
spec.require_paths = ['lib']
|
20
19
|
|
21
|
-
spec.add_dependency 'base58', '~> 0.2
|
22
|
-
spec.add_dependency '
|
23
|
-
spec.add_development_dependency '
|
24
|
-
spec.add_development_dependency '
|
25
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
20
|
+
spec.add_dependency 'base58', '~> 0.2'
|
21
|
+
spec.add_dependency 'keccak', '~> 1.3'
|
22
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.10'
|
26
24
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AdequateCryptoAddress
|
4
|
+
class Ton
|
5
|
+
attr_reader :address, :type
|
6
|
+
|
7
|
+
def initialize(address)
|
8
|
+
@address = address
|
9
|
+
@type = address_type
|
10
|
+
end
|
11
|
+
|
12
|
+
def valid?(type = nil)
|
13
|
+
if type
|
14
|
+
address_type == type.to_sym
|
15
|
+
else
|
16
|
+
!address_type.nil?
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def address_type
|
23
|
+
return :TON if address.size == 48 && pattern_valid?
|
24
|
+
end
|
25
|
+
|
26
|
+
def pattern_valid?
|
27
|
+
address.match(/([0-9a-zA-Z]|-|_){48}/)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AdequateCryptoAddress
|
4
|
+
class Xmr
|
5
|
+
attr_reader :address, :type
|
6
|
+
|
7
|
+
def initialize(address)
|
8
|
+
@address = address
|
9
|
+
@type = address_type
|
10
|
+
end
|
11
|
+
|
12
|
+
def valid?(type = nil)
|
13
|
+
if type
|
14
|
+
address_type == type.to_sym
|
15
|
+
else
|
16
|
+
!address_type.nil?
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def address_type
|
23
|
+
return nil unless [95, 106].include?(address.size)
|
24
|
+
|
25
|
+
return :monero if pattern_valid?
|
26
|
+
end
|
27
|
+
|
28
|
+
def pattern_valid?
|
29
|
+
address.size == 95 ?
|
30
|
+
address.match(/^4[0-9AB][1-9A-HJ-NP-Za-km-z]{93}$/) :
|
31
|
+
address.match(/^4[1-9A-HJ-NP-Za-km-z]{105}(?:[1-9A-HJ-NP-Za-km-z]{30})?$/)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
Monero = Xmr
|
35
|
+
end
|
@@ -11,6 +11,8 @@ require 'adequate_crypto_address/xrp'
|
|
11
11
|
require 'adequate_crypto_address/dash'
|
12
12
|
require 'adequate_crypto_address/zec'
|
13
13
|
require 'adequate_crypto_address/ltc'
|
14
|
+
require 'adequate_crypto_address/ton'
|
15
|
+
require 'adequate_crypto_address/xmr'
|
14
16
|
|
15
17
|
module AdequateCryptoAddress
|
16
18
|
class UnknownCurrency < StandardError; end
|
@@ -178,6 +178,36 @@ RSpec.describe(AdequateCryptoAddress) do
|
|
178
178
|
expect(described_class).not_to be_valid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', :zcash, :test)
|
179
179
|
end
|
180
180
|
end
|
181
|
+
|
182
|
+
context 'Toncoin' do
|
183
|
+
it 'validates addresses' do
|
184
|
+
expect(described_class).to be_valid('UQCScs4HjjwnlIFKIq_juiuLLLnjJKTjQyfcADjYNvdYwn-l', :TON)
|
185
|
+
end
|
186
|
+
|
187
|
+
it 'validates wrong addresses' do
|
188
|
+
expect(described_class).not_to be_valid('wrongFKIq_juiuLLLnjJKTjQyfcAD', :TON)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
context 'Monero' do
|
193
|
+
it 'validates addresses' do
|
194
|
+
expect(described_class).to be_valid('4BKnGLZNZ5pjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQVmzCh57', :XMR)
|
195
|
+
expect(described_class).to be_valid('4BKnGLZNZ5pjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQVmzCh57', :monero)
|
196
|
+
expect(described_class).to be_valid('4BKnGLZNZ5pjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQVmzCh57', :Xmr)
|
197
|
+
expect(described_class).to be_valid('4BKnGLZNZ5pjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQjpXCZedGfVQVmzCh57', :xmr)
|
198
|
+
expect(described_class).to be_valid('4TZ76dT4mbsizsTtJzy7kYBo9f8xduc8wTsWb86pCmx5Cmh43CDxNS1FRcMrE3CNQ2ZT17vzCudc5TbNYBzizwqZFah5K1Js7VpL88qPSi', :monero)
|
199
|
+
expect(described_class).to be_valid('4TZ76dT4mbsizsTtJzy7kYBo9f8xduc8wTsWb86pCmx5Cmh43CDxNS1FRcMrE3CNQ2ZT17vzCudc5TbNYBzizwqZFah5K1Js7VpL88qPSi', :Xmr)
|
200
|
+
expect(described_class).to be_valid('4TZ76dT4mbsizsTtJzy7kYBo9f8xduc8wTsWb86pCmx5Cmh43CDxNS1FRcMrE3CNQ2ZT17vzCudc5TbNYBzizwqZFah5K1Js7VpL88qPSi', :Xmr)
|
201
|
+
expect(described_class).to be_valid('4TZ76dT4mbsizsTtJzy7kYBo9f8xduc8wTsWb86pCmx5Cmh43CDxNS1FRcMrE3CNQ2ZT17vzCudc5TbNYBzizwqZFah5K1Js7VpL88qPSi', :xmr)
|
202
|
+
end
|
203
|
+
|
204
|
+
it 'validates wrong addresses' do
|
205
|
+
expect(described_class).not_to be_valid('NOT_VALID_4BKnGLZNZ5pjpXCZedGfVQjpXCZedGfVQjp', :monero)
|
206
|
+
expect(described_class).not_to be_valid('NOT_VALID_4BKnGLZNZ5pjpXCZedGfVQjpXCZedGfVQjp', :Xmr)
|
207
|
+
expect(described_class).not_to be_valid('NOT_VALID_4BKnGLZNZ5pjpXCZedGfVQjpXCZedGfVQjp', :XMR)
|
208
|
+
expect(described_class).not_to be_valid('NOT_VALID_4BKnGLZNZ5pjpXCZedGfVQjpXCZedGfVQjp', :xmr)
|
209
|
+
end
|
210
|
+
end
|
181
211
|
end
|
182
212
|
|
183
213
|
describe '.address' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adequate_crypto_address
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vtm
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: base58
|
@@ -16,73 +16,58 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2
|
19
|
+
version: '0.2'
|
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: 0.2
|
26
|
+
version: '0.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: keccak
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: '1.3'
|
34
34
|
type: :runtime
|
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: 1.
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: bundler
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.16'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.16'
|
40
|
+
version: '1.3'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rake
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
47
|
+
version: '13.0'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
54
|
+
version: '13.0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: '3.
|
61
|
+
version: '3.10'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
68
|
+
version: '3.10'
|
83
69
|
description: A Ruby Library for dealing with validation cryptocurrency adresses.
|
84
70
|
email:
|
85
|
-
- vtmilyakov@yandex.ru
|
86
71
|
executables: []
|
87
72
|
extensions: []
|
88
73
|
extra_rdoc_files: []
|
@@ -106,9 +91,11 @@ files:
|
|
106
91
|
- lib/adequate_crypto_address/dash.rb
|
107
92
|
- lib/adequate_crypto_address/eth.rb
|
108
93
|
- lib/adequate_crypto_address/ltc.rb
|
94
|
+
- lib/adequate_crypto_address/ton.rb
|
109
95
|
- lib/adequate_crypto_address/utils/bch.rb
|
110
96
|
- lib/adequate_crypto_address/utils/bech32.rb
|
111
97
|
- lib/adequate_crypto_address/version.rb
|
98
|
+
- lib/adequate_crypto_address/xmr.rb
|
112
99
|
- lib/adequate_crypto_address/xrp.rb
|
113
100
|
- lib/adequate_crypto_address/zec.rb
|
114
101
|
- spec/adequate_crypto_address/bch_spec.rb
|
@@ -118,7 +105,7 @@ homepage: https://github.com/vtm9/adequate_crypto_address
|
|
118
105
|
licenses:
|
119
106
|
- MIT
|
120
107
|
metadata: {}
|
121
|
-
post_install_message:
|
108
|
+
post_install_message:
|
122
109
|
rdoc_options: []
|
123
110
|
require_paths:
|
124
111
|
- lib
|
@@ -133,8 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
120
|
- !ruby/object:Gem::Version
|
134
121
|
version: '0'
|
135
122
|
requirements: []
|
136
|
-
rubygems_version: 3.
|
137
|
-
signing_key:
|
123
|
+
rubygems_version: 3.2.22
|
124
|
+
signing_key:
|
138
125
|
specification_version: 4
|
139
126
|
summary: A Ruby Library for dealing with validation cryptocurrency adresses.
|
140
127
|
test_files: []
|