Class: MaskedDataGenerator
- Inherits:
-
Object
- Object
- MaskedDataGenerator
- Defined in:
- lib/data_veil/mask_data_generator.rb
Class Method Summary collapse
- .generate_date_masked_value(config) ⇒ Object
- .generate_enum_masked_value(config) ⇒ Object
- .generate_integer_masked_value(config) ⇒ Object
- .generate_masked_value(mask_type, config = {}) ⇒ Object
- .generate_password_masked_value(config) ⇒ Object
- .mask_strategies ⇒ Object
Class Method Details
.generate_date_masked_value(config) ⇒ Object
32 33 34 35 36 |
# File 'lib/data_veil/mask_data_generator.rb', line 32 def self.generate_date_masked_value(config) start_date = Date.parse(config[:start_date] || "1970-01-01") end_date = Date.parse(config[:end_date] || Date.today.to_s) Faker::Date.between(from: start_date, to: end_date) end |
.generate_enum_masked_value(config) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/data_veil/mask_data_generator.rb', line 38 def self.generate_enum_masked_value(config) values = config[:values] raise ArgumentError, "Enum values must be specified" if values.nil? || values.empty? values.sample end |
.generate_integer_masked_value(config) ⇒ Object
20 21 22 23 24 |
# File 'lib/data_veil/mask_data_generator.rb', line 20 def self.generate_integer_masked_value(config) min = config[:min] || 0 max = config[:max] || 100 Faker::Number.between(from: min, to: max) end |
.generate_masked_value(mask_type, config = {}) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/data_veil/mask_data_generator.rb', line 45 def self.generate_masked_value(mask_type, config = {}) strategy = mask_strategies[mask_type] raise ArgumentError, "Unknown mask type: #{mask_type}" unless strategy strategy.call(config.transform_keys(&:to_sym)) rescue StandardError => e raise ArgumentError, "Error generating masked value for #{mask_type}: #{e.message}" end |
.generate_password_masked_value(config) ⇒ Object
26 27 28 29 30 |
# File 'lib/data_veil/mask_data_generator.rb', line 26 def self.generate_password_masked_value(config) min_length = config[:min_length] || 10 max_length = config[:max_length] || 20 Faker::Internet.password(min_length: min_length, max_length: max_length) end |
.mask_strategies ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/data_veil/mask_data_generator.rb', line 4 def self.mask_strategies @mask_strategies ||= { "uuid" => ->(_) { Faker::Internet.uuid }, "email" => ->(_) { Faker::Internet.unique.email }, "string" => ->(config) { Faker::Lorem.characters(number: config[:length] || 20) }, "postcode" => ->(_) { Faker::Base.numerify("###-####", leading_zero: true) }, "tel" => ->(_) { Faker::PhoneNumber.phone_number }, "first_name" => ->(_) { Faker::Name.first_name }, "last_name" => ->(_) { Faker::Name.last_name }, "integer" => method(:generate_integer_masked_value), "password" => method(:generate_password_masked_value), "date" => method(:generate_date_masked_value), "enum" => method(:generate_enum_masked_value) }.freeze end |