adequate_crypto_address 0.1.3 → 0.1.4

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: 396151caf8361e74bf9686d4ec10c913c6ba5f3c16a695fdf1c2a33dc3886abb
4
- data.tar.gz: 51131dea9686bab8c4ea4996b53735c7db13b5d6c94869d39935b5517710b11b
3
+ metadata.gz: 66e0b65abfe56eac0be65f3edf9659e2e01cff5bd0316dd351e0e67147ae7869
4
+ data.tar.gz: 6d5a85caa8ed1a1370ef7247d320e9e74ec08a1f2719b2ec712c99f8e5b4e078
5
5
  SHA512:
6
- metadata.gz: d0bb08404d180ee04be259d804aa298009136b57bfe023c3296bc09c792dca7e292a50f87a481e472210dacde055c58aff88b8c4f69800eacd566dac25b5451b
7
- data.tar.gz: 4c18a2e6cdd22d5ac0e66eeb5bfcf2583f0114e945ea20a84aab8ab40d968f01848229e8e2d731d4f8b9b7499ba5af52a7c08d270eca6d64cd9700506050211f
6
+ metadata.gz: b2bab1c6a29e339533aca606a1b16164367886b31b7ef42f3624760e4098c1c49b8fc7867edbc840b7bbce70995769c9c0dc7b743e419e0a273f23053c74f1dd
7
+ data.tar.gz: 964a58d65459a09d9d73881f823dbf3d6c820972b2ce944f1610f9799d3a89839f0115735eabf427e232a46f9ef62ef58ba77c9b4f8ea83e61023ad49b5fbb23
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018 vtm
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,13 +1,19 @@
1
- # AdequateCryptoAddress
1
+
2
+ AdequateCryptoAddress
3
+ ===============
4
+
5
+ [![Gem Version][gem-version-svg]][gem-version-link]
6
+ [![Build Status][build-status-svg]][build-status-link]
7
+ [![Code Climate][codeclimate-status-svg]][codeclimate-status-link]
8
+ [![Coverage Status][coverage-status-svg]][coverage-status-link]
9
+ [![Downloads][downloads-svg]][downloads-link]
10
+ [![Docs][docs-rubydoc-svg]][docs-rubydoc-link]
11
+ [![License][license-svg]][license-link]
12
+
2
13
  Simple wallet address validator and normalizer for cryptocurrencies addresses in Ruby.
3
14
 
4
15
  Inspired by [ognus/wallet-address-validator](https://github.com/ognus/wallet-address-validator).
5
16
 
6
- [![Gem Version](https://badge.fury.io/rb/adequate_crypto_address.svg)](https://rubygems.org/gems/adequate_crypto_address)
7
- [![Build Status](https://travis-ci.org/vtm9/adequate_crypto_address.svg?branch=master)](https://travis-ci.org/vtm9/adequate_crypto_address)
8
- [![Code Climate](https://codeclimate.com/github/vtm9/adequate_crypto_address.svg)](https://codeclimate.com/github/vtm9/adequate_crypto_address)
9
- [![Coverage Status](https://coveralls.io/repos/vtm9/adequate_crypto_address/badge.svg?branch=master)](https://coveralls.io/r/vtm9/adequate_crypto_address?branch=master)
10
- [![License](https://img.shields.io/github/license/RubyMoney/money.svg)](https://opensource.org/licenses/MIT)
11
17
 
12
18
  ## Installation
13
19
 
@@ -25,7 +31,7 @@ gem install adequate_crypto_address
25
31
 
26
32
  ## Main API
27
33
 
28
- ##### .valid? (address [, currency = 'BTC'[, type = :prod]])
34
+ ##### .valid? (address, currency [, type = :prod])
29
35
 
30
36
  ###### Parameters
31
37
  * address - Wallet address to validate.
@@ -62,6 +68,7 @@ AdequateCryptoAddress.valid?('de709f2102306220921060314715629080e2fb77', :ethere
62
68
  ```
63
69
 
64
70
  ### Normalization
71
+ ###### *Not all currencies support this feature.
65
72
  ``` ruby
66
73
  require 'adequate_crypto_address'
67
74
 
@@ -78,7 +85,49 @@ addr.address #=> "bitcoincash:qrtj3rd8524cndt2eew3s6wljqggmne00sgh4kfypk"
78
85
  # ETH
79
86
  AdequateCryptoAddress.address('D1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb', 'eth').address #=> "0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb"
80
87
  ```
81
- *Not all currencies support this feature.
88
+
89
+
90
+ ### ActiveRecord validation example
91
+ ``` ruby
92
+ class Model < ActiveRecord::Base
93
+ attribute :address, :string
94
+ attribute :dest_tag, :string
95
+ attribute :currency, :string
96
+
97
+ validate :validate_address_type
98
+ validate :validate_destination_tag
99
+
100
+ def validate_address_type
101
+ errors.add(:address, 'invalid address') unless AdequateCryptoAddress.valid?(address, currency)
102
+ end
103
+
104
+ # for Ripple
105
+ def validate_destination_tag
106
+ errors.add(:dest_tag, 'invalid destination tag') if dest_tag.present? && !(dest_tag =~ /\A\d{1,10}\z/)
107
+ end
108
+ end
109
+
110
+ ```
111
+ ### Add your currnecy
112
+ ``` ruby
113
+ # frozen_string_literal: true
114
+ # for Rails /config/initializers/adequate_crypto_address.rb
115
+ module AdequateCryptoAddress
116
+ class Coin
117
+ attr_reader :address
118
+
119
+ def initialize(address_sring)
120
+ @address = address_sring
121
+ end
122
+
123
+ def valid?(_type)
124
+ address.present?
125
+ end
126
+ end
127
+ end
128
+
129
+ AdequateCryptoAddress.valid?('addr', :coin) #=> true
130
+ ```
82
131
 
83
132
  ## Development
84
133
 
@@ -97,3 +146,19 @@ Run `rake spec` to run the tests. You can also run `bin/console` for an interact
97
146
  ## Notes
98
147
 
99
148
  Bug reports and pull requests are welcome on GitHub at https://github.com/vtm9/adequate_crypto_address/issues
149
+
150
+ [gem-version-svg]: https://badge.fury.io/rb/adequate_crypto_address.svg
151
+ [gem-version-link]: https://rubygems.org/gems/adequate_crypto_address
152
+ [downloads-svg]: http://ruby-gem-downloads-badge.herokuapp.com/adequate_crypto_address
153
+ [downloads-link]: https://rubygems.org/gems/adequate_crypto_address
154
+ [build-status-svg]: https://travis-ci.org/vtm9/adequate_crypto_address.svg?branch=master
155
+ [build-status-link]:https://travis-ci.org/vtm9/adequate_crypto_address
156
+ [coverage-status-svg]: https://coveralls.io/repos/vtm9/adequate_crypto_address/badge.svg?branch=master
157
+ [coverage-status-link]: https://coveralls.io/r/vtm9/adequate_crypto_address?branch=master
158
+ [codeclimate-status-svg]: https://codeclimate.com/github/vtm9/adequate_crypto_address.svg
159
+ [codeclimate-status-link]: https://codeclimate.com/github/vtm9/adequate_crypto_address
160
+ [docs-rubydoc-svg]: https://img.shields.io/badge/docs-rubydoc-blue.svg
161
+ [docs-rubydoc-link]: http://www.rubydoc.info/gems/adequate_crypto_address/
162
+ [license-svg]: https://img.shields.io/badge/license-MIT-blue.svg
163
+ [license-link]: https://github.com/vtm9/adequate_crypto_address/blob/master/LICENSE.txt
164
+
@@ -8,6 +8,7 @@ require 'adequate_crypto_address/btc'
8
8
  require 'adequate_crypto_address/xrp'
9
9
  require 'adequate_crypto_address/dash'
10
10
  require 'adequate_crypto_address/zec'
11
+ require 'adequate_crypto_address/ltc'
11
12
 
12
13
  module AdequateCryptoAddress
13
14
  class UnknownCurrency < StandardError; end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AdequateCryptoAddress
4
+ class Ltc < Altcoin
5
+ ADDRESS_TYPES = { prod: %w[30 05 32], test: %w[6f c4 3a] }.freeze
6
+ end
7
+ Litecoin = Ltc
8
+ end
@@ -1,3 +1,3 @@
1
1
  module AdequateCryptoAddress
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.4'.freeze
3
3
  end
@@ -93,6 +93,7 @@ RSpec.describe(AdequateCryptoAddress) do
93
93
  end
94
94
 
95
95
  it 'validates wrong addresses' do
96
+ expect(described_class).not_to be_valid('wrong', :ETH)
96
97
  expect(described_class).not_to be_valid('0xD1110A0cf47c7B9Be7A2E6BA89F429762e7b9aDb', 'ETH')
97
98
  expect(described_class).not_to be_valid('a10354276d2fC74ee91e37D085d35748613f4748', :ethereum)
98
99
  end
@@ -109,6 +110,7 @@ RSpec.describe(AdequateCryptoAddress) do
109
110
  end
110
111
 
111
112
  it 'validates wrong addresses' do
113
+ expect(described_class).not_to be_valid('wrong', :xrp)
112
114
  expect(described_class).not_to be_valid('r3kmLJN5D28dHuH8vZNUZpMC43pEHpaoc1', :xrp)
113
115
  expect(described_class).not_to be_valid('r1kmLJN5D28dHuH8vZNUZpMC43pEHpaocV', 'ripple')
114
116
  end
@@ -123,6 +125,7 @@ RSpec.describe(AdequateCryptoAddress) do
123
125
  end
124
126
 
125
127
  it 'validates wrong addresses' do
128
+ expect(described_class).not_to be_valid('wrong', :dash)
126
129
  expect(described_class).not_to be_valid('yPv7h2i8v3dJ1fSH4L3x91JSJszjdbsJJA', :dash)
127
130
  expect(described_class).not_to be_valid('XqMkVUZnqe3w4xvgdZRtZoe7gMitDudGs4', 'dash', :test)
128
131
  expect(described_class).not_to be_valid('yPv7h2i8v3dJjfSH4L3x91JSJszjdbsJJA', :DASH, :prod)
@@ -137,6 +140,29 @@ RSpec.describe(AdequateCryptoAddress) do
137
140
  end
138
141
 
139
142
  it 'validates wrong addresses' do
143
+ expect(described_class).not_to be_valid('wrong', :zec)
144
+ expect(described_class).not_to be_valid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', :zcash)
145
+ expect(described_class).not_to be_valid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', :ZEC)
146
+ expect(described_class).not_to be_valid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', :zcash, :test)
147
+ end
148
+ end
149
+
150
+ context 'Litecoin' do
151
+ it 'validates addresses' do
152
+ expect(described_class).to be_valid('LVg2kJoFNg45Nbpy53h7Fe1wKyeXVRhMH9', :ltc)
153
+ expect(described_class).to be_valid('LVg2kJoFNg45Nbpy53h7Fe1wKyeXVRhMH9', 'ltc', :prod)
154
+ expect(described_class).to be_valid('LTpYZG19YmfvY2bBDYtCKpunVRw7nVgRHW', 'LTC')
155
+ expect(described_class).to be_valid('Lb6wDP2kHGyWC7vrZuZAgV7V4ECyDdH7a6', 'Litecoin')
156
+ expect(described_class).to be_valid('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef', 'Litecoin', :test)
157
+
158
+ expect(described_class).to be_valid('3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt', 'LTC')
159
+ expect(described_class).to be_valid('2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7', 'LTC', :test)
160
+ expect(described_class).to be_valid('QW2SvwjaJU8LD6GSmtm1PHnBG2xPuxwZFy', 'LTC', :test)
161
+ expect(described_class).to be_valid('QjpzxpbLp5pCGsCczMbfh1uhC3P89QZavY', 'LTC', :test)
162
+ end
163
+
164
+ it 'validates wrong addresses' do
165
+ expect(described_class).not_to be_valid('wrong', :zec)
140
166
  expect(described_class).not_to be_valid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', :zcash)
141
167
  expect(described_class).not_to be_valid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', :ZEC)
142
168
  expect(described_class).not_to be_valid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', :zcash, :test)
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.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - vtm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-21 00:00:00.000000000 Z
11
+ date: 2019-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base58
@@ -93,6 +93,7 @@ files:
93
93
  - ".rubocop.yml"
94
94
  - ".travis.yml"
95
95
  - Gemfile
96
+ - LICENSE.txt
96
97
  - README.md
97
98
  - Rakefile
98
99
  - adequate_crypto_address.gemspec
@@ -103,6 +104,7 @@ files:
103
104
  - lib/adequate_crypto_address/btc.rb
104
105
  - lib/adequate_crypto_address/dash.rb
105
106
  - lib/adequate_crypto_address/eth.rb
107
+ - lib/adequate_crypto_address/ltc.rb
106
108
  - lib/adequate_crypto_address/utils/bch.rb
107
109
  - lib/adequate_crypto_address/utils/bech32.rb
108
110
  - lib/adequate_crypto_address/version.rb
@@ -130,8 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
132
  - !ruby/object:Gem::Version
131
133
  version: '0'
132
134
  requirements: []
133
- rubyforge_project:
134
- rubygems_version: 2.7.6
135
+ rubygems_version: 3.0.1
135
136
  signing_key:
136
137
  specification_version: 4
137
138
  summary: A Ruby Library for dealing with validation cryptocurrency adresses.