id_validator 0.1.0
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 +7 -0
- data/.gitignore +9 -0
- data/.idea/vcs.xml +6 -0
- data/.travis.yml +12 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +22 -0
- data/README.md +122 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/id_validator.gemspec +26 -0
- data/lib/id_validator/concern/helper.rb +229 -0
- data/lib/id_validator/config.rb +6768 -0
- data/lib/id_validator/validator.rb +66 -0
- data/lib/id_validator/version.rb +3 -0
- data/lib/id_validator.rb +36 -0
- metadata +103 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
module IdValidator
|
2
|
+
class Validator
|
3
|
+
include IdValidator::Concern::Helper
|
4
|
+
|
5
|
+
# 检查身份证合法性
|
6
|
+
def is_valid?(id_card)
|
7
|
+
code = get_id_argument(id_card)
|
8
|
+
|
9
|
+
return false unless check_address_code(code[:address_code])
|
10
|
+
return false unless check_birthday_code(code[:birthday_code])
|
11
|
+
return false unless check_order_code(code[:order_code])
|
12
|
+
|
13
|
+
return true if code[:type] == 15
|
14
|
+
|
15
|
+
check_bit = generate_check_bit(code[:body])
|
16
|
+
return false if check_bit.nil? || (code[:check_bit] != check_bit)
|
17
|
+
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
# 获取身份证详细信息
|
22
|
+
def get_info(id_card)
|
23
|
+
return false unless is_valid?(id_card)
|
24
|
+
|
25
|
+
code = get_id_argument(id_card)
|
26
|
+
address_info = get_address_info(code[:address_code])
|
27
|
+
|
28
|
+
{
|
29
|
+
address_code: code[:address_code],
|
30
|
+
address: IdValidator::Concern::Func.format_address_info(address_info),
|
31
|
+
abandoned: check_is_abandoned(code[:address_code]),
|
32
|
+
birthday_code: IdValidator::Concern::Func.format_birthday_code(code[:birthday_code]),
|
33
|
+
constellation: get_constellation(code[:birthday_code]),
|
34
|
+
chinese_zodiac: get_chinese_zodiac(code[:birthday_code]),
|
35
|
+
sex: code[:order_code].to_i % 2,
|
36
|
+
length: code[:type],
|
37
|
+
check_bit: code[:check_bit]
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
# 构建虚假身份证信息
|
42
|
+
def fake_id(eighteen = true, address = nil, birthday = nil, sex = nil)
|
43
|
+
address_code = generate_address_code(address)
|
44
|
+
birthday_code = generate_birthday_code(birthday)
|
45
|
+
order_code = generate_order_code(sex)
|
46
|
+
|
47
|
+
return address_code + birthday_code[2..-1] + order_code unless eighteen
|
48
|
+
|
49
|
+
body = address_code + birthday_code + order_code
|
50
|
+
check_bit = generate_check_bit(body)
|
51
|
+
|
52
|
+
body + check_bit
|
53
|
+
end
|
54
|
+
|
55
|
+
# 身份证号升级(15位 升级为 18位)
|
56
|
+
def upgrade_id(id_card)
|
57
|
+
return false unless (id_card.length == 15 && is_valid?(id_card))
|
58
|
+
|
59
|
+
code = get_id_argument(id_card)
|
60
|
+
body = code[:address_code] + code[:birthday_code] + code[:order_code]
|
61
|
+
|
62
|
+
body + generate_check_bit(body)
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
data/lib/id_validator.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require "date"
|
2
|
+
require "id_validator/version"
|
3
|
+
require "id_validator/config"
|
4
|
+
require "id_validator/concern/helper"
|
5
|
+
require "id_validator/validator"
|
6
|
+
|
7
|
+
module IdValidator
|
8
|
+
class << self
|
9
|
+
|
10
|
+
# 检查身份证合法性
|
11
|
+
def is_valid?(id_card)
|
12
|
+
id_card = id_card.to_s
|
13
|
+
return false unless [15, 18].include?(id_card.length)
|
14
|
+
|
15
|
+
IdValidator::Validator.new.is_valid?(id_card)
|
16
|
+
end
|
17
|
+
|
18
|
+
# 获取身份证详细信息
|
19
|
+
def get_info(id_card)
|
20
|
+
::IdValidator::Validator.new.get_info(id_card.to_s)
|
21
|
+
end
|
22
|
+
|
23
|
+
# 返回虚假身份证号
|
24
|
+
def fake_id(eighteen = true, address = nil, birthday = nil, sex = nil)
|
25
|
+
validator = ::IdValidator::Validator.new
|
26
|
+
|
27
|
+
validator.fake_id(eighteen, address, birthday, sex)
|
28
|
+
end
|
29
|
+
|
30
|
+
# 身份证号升级(15位 升级为 18位)
|
31
|
+
def upgrade_id(id_card)
|
32
|
+
::IdValidator::Validator.new.upgrade_id(id_card.to_s)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: id_validator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- renyijiu
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-10-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
description: A Ruby Gem For Chinese Mainland Personal ID Card Validation
|
56
|
+
email:
|
57
|
+
- lanyuejin1108@gmail.com
|
58
|
+
executables:
|
59
|
+
- console
|
60
|
+
- setup
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- ".gitignore"
|
65
|
+
- ".idea/vcs.xml"
|
66
|
+
- ".travis.yml"
|
67
|
+
- CODE_OF_CONDUCT.md
|
68
|
+
- Gemfile
|
69
|
+
- Gemfile.lock
|
70
|
+
- README.md
|
71
|
+
- Rakefile
|
72
|
+
- bin/console
|
73
|
+
- bin/setup
|
74
|
+
- id_validator.gemspec
|
75
|
+
- lib/id_validator.rb
|
76
|
+
- lib/id_validator/concern/helper.rb
|
77
|
+
- lib/id_validator/config.rb
|
78
|
+
- lib/id_validator/validator.rb
|
79
|
+
- lib/id_validator/version.rb
|
80
|
+
homepage: https://github.com/renyijiu/id_validator
|
81
|
+
licenses: []
|
82
|
+
metadata: {}
|
83
|
+
post_install_message:
|
84
|
+
rdoc_options: []
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
requirements: []
|
98
|
+
rubyforge_project:
|
99
|
+
rubygems_version: 2.7.7
|
100
|
+
signing_key:
|
101
|
+
specification_version: 4
|
102
|
+
summary: Chinese Mainland Personal ID Card Validation.
|
103
|
+
test_files: []
|