Module: Callcredit::Validations
- Defined in:
- lib/callcredit/validations.rb
Constant Summary collapse
- VALIDATIONS =
{ date_of_birth: ->(val) { clean_date_of_birth(val) }, title: ->(val) { val || "Unknown" }, first_name: ->(val) { clean_name(val, :first_name) }, last_name: ->(val) { clean_name(val, :last_name) }, middle_names: ->(val) { clean_name(val, :middle_names) }, postcode: ->(val) { clean_postcode(val, :postcode) }, previous_postcode: ->(val) { clean_postcode(val, :previous_postcode) }, account_number: ->(val) { clean_account_number(val) }, sort_code: ->(val) { clean_sort_code(val) }, }
Class Method Summary collapse
- .clean_account_number(account_number) ⇒ Object
- .clean_date_of_birth(date_of_birth) ⇒ Object
- .clean_name(name, param) ⇒ Object
- .clean_param(key, value) ⇒ Object
- .clean_postcode(postcode, param) ⇒ Object
- .clean_sort_code(sort_code) ⇒ Object
- .input_error(param, value = nil) ⇒ Object
Class Method Details
.clean_account_number(account_number) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/callcredit/validations.rb', line 43 def self.clean_account_number(account_number) return unless account_number cleaned_value = account_number.to_s.gsub(/[-\s]/, '') unless cleaned_value =~ /\A\d{6,8}\z/ input_error(:account_number, account_number) end cleaned_value end |
.clean_date_of_birth(date_of_birth) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/callcredit/validations.rb', line 20 def self.clean_date_of_birth(date_of_birth) return unless date_of_birth date_of_birth = Date.parse(date_of_birth) if date_of_birth.is_a? String date_of_birth.strftime("%d/%m/%Y") rescue input_error(:date_of_birth, date_of_birth) end |
.clean_name(name, param) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/callcredit/validations.rb', line 28 def self.clean_name(name, param) return unless name # Convert name to ASCII characters only name = UnicodeUtils.nfkd(name).gsub(/(\p{Letter})\p{Mark}+/, '\\1') input_error(param, name) unless name =~ /\A[a-z A-Z'-]{1,30}\z/ name end |
.clean_param(key, value) ⇒ Object
15 16 17 18 |
# File 'lib/callcredit/validations.rb', line 15 def self.clean_param(key, value) validator = VALIDATIONS.fetch(key, ->(val) { val }) validator.call(value) end |
.clean_postcode(postcode, param) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/callcredit/validations.rb', line 36 def self.clean_postcode(postcode, param) return unless postcode postcode = postcode.upcase.strip input_error(param, postcode) unless postcode =~ /\A[A-Z 0-9]{5,8}\z/ postcode end |
.clean_sort_code(sort_code) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/callcredit/validations.rb', line 52 def self.clean_sort_code(sort_code) return unless sort_code cleaned_value = sort_code.to_s.gsub(/[-\s]/, '') input_error(:sort_code, sort_code) unless cleaned_value =~ /\A\d{6}\z/ cleaned_value end |
.input_error(param, value = nil) ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/callcredit/validations.rb', line 59 def self.input_error(param, value = nil) msg = if value.nil? "#{param} is a required param" else "Invalid value \"#{value}\" for #{param}" end raise InvalidRequestError.new(msg, param) end |