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.
@@ -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
@@ -0,0 +1,3 @@
1
+ module IdValidator
2
+ VERSION = "0.1.0"
3
+ end
@@ -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: []