Module: CompaniesHouseGateway::Validations
- Defined in:
- lib/companies_house_gateway/validations.rb
Constant Summary collapse
- VALIDATIONS =
{ company_name: ->(value) { clean_string(value, :company_name) }, company_number: ->(value) { clean_company_number(value) }, partial_company_number: ->(value) { value }, give_mort_totals: ->(value) { clean_boolean(value, :give_mort_totals) }, search_rows: ->(value) { clean_number(value, :search_rows) }, data_set: ->(value) { clean_data_set(value) }, capital_doc_ind: ->(value) { clean_boolean(value, :capital_doc_ind) }, include_resigned_ind: ->(value) { clean_boolean(value, :include_resigned_ind) }, satisfied_charges_ind: ->(value) { clean_boolean(value, :satisfied_charges_ind) }, start_date: ->(value) { clean_date(value, :start_date) }, end_date: ->(value) { clean_date(value, :end_date) }, surname: ->(value) { clean_string(value, :surname) }, forename: ->(value) { clean_string(value, :forename) }, post_town: ->(value) { clean_string(value, :post_town) }, officer_type: ->(value) { clean_officer_type(value) }, }
Class Method Summary collapse
- .clean_boolean(bool, param) ⇒ Object
- .clean_company_number(number) ⇒ Object
- .clean_data_set(value) ⇒ Object
- .clean_date(date, param) ⇒ Object
- .clean_number(value, param) ⇒ Object
- .clean_officer_type(type) ⇒ Object
- .clean_param(key, value) ⇒ Object
- .clean_string(string, param) ⇒ Object
- .input_error(param, value = nil) ⇒ Object
Class Method Details
.clean_boolean(bool, param) ⇒ Object
41 42 43 44 45 |
# File 'lib/companies_house_gateway/validations.rb', line 41 def self.clean_boolean(bool, param) return unless bool input_error(param, bool) unless [true, false].include?(bool) bool end |
.clean_company_number(number) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/companies_house_gateway/validations.rb', line 69 def self.clean_company_number(number) return unless number number = number.to_s.strip # remove whitespace number = number.upcase # upcase any prefixes # 0-pad 5 or 7 digit registration number if number.match /\A(\D{2})(\d{5})\z/ number = $1 + $2.rjust(6,"0") elsif number.match /\A\d{7}\z/ number = number.rjust(8, "0") end companies_house_regex = /\A(#{Constants::ALLOWED_PREFIXES * '|'})\d{6}\z/ if number =~ companies_house_regex number else input_error(:company_number, number) end end |
.clean_data_set(value) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/companies_house_gateway/validations.rb', line 53 def self.clean_data_set(value) return unless value value = value.to_s.upcase input_error(:data_set, value) unless Constants::DATA_SETS.include?(value) value end |
.clean_date(date, param) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/companies_house_gateway/validations.rb', line 33 def self.clean_date(date, param) return unless date date = Date.parse(date) if date.is_a? String date.strftime("%d/%m/%Y") rescue input_error(param, date) end |
.clean_number(value, param) ⇒ Object
47 48 49 50 51 |
# File 'lib/companies_house_gateway/validations.rb', line 47 def self.clean_number(value, param) return unless value input_error(param, value) unless value.to_s =~ /\A\d+\z/ value.to_s end |
.clean_officer_type(type) ⇒ Object
60 61 62 63 64 65 66 67 |
# File 'lib/companies_house_gateway/validations.rb', line 60 def self.clean_officer_type(type) return unless type type = type.to_s.upcase unless Constants::OFFICER_TYPES.include?(type) input_error(:officer_type, type) end type end |
.clean_param(key, value) ⇒ Object
22 23 24 25 |
# File 'lib/companies_house_gateway/validations.rb', line 22 def self.clean_param(key, value) validator = VALIDATIONS.fetch(key, ->(value){ value }) validator.call(value) end |
.clean_string(string, param) ⇒ Object
27 28 29 30 31 |
# File 'lib/companies_house_gateway/validations.rb', line 27 def self.clean_string(string, param) return unless string input_error(param, string) unless string =~ /\A.{0,160}\z/ string end |
.input_error(param, value = nil) ⇒ Object
89 90 91 92 93 94 95 96 |
# File 'lib/companies_house_gateway/validations.rb', line 89 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 |