lib/creditsafe/request/find_company.rb in creditsafe-0.4.0 vs lib/creditsafe/request/find_company.rb in creditsafe-0.5.0

- old
+ new

@@ -1,8 +1,9 @@ # frozen_string_literal: true require 'creditsafe/namespace' +require 'creditsafe/match_type' module Creditsafe module Request class FindCompany def initialize(search_criteria) @@ -12,15 +13,17 @@ @company_name = search_criteria[:company_name] @city = search_criteria[:city] @postal_code = search_criteria[:postal_code] end + # rubocop:disable Metrics/MethodLength + # rubocop:disable Metrics/AbcSize def message search_criteria = {} search_criteria["#{Creditsafe::Namespace::DAT}:Name"] = { - '@MatchType' => 'MatchBlock', + '@MatchType' => match_type, :content! => company_name } unless company_name.nil? unless registration_number.nil? search_criteria["#{Creditsafe::Namespace::DAT}:RegistrationNumber"] = @@ -35,34 +38,37 @@ "#{Creditsafe::Namespace::DAT}:PostalCode" => postal_code } unless postal_code.nil? build_message(search_criteria) end + # rubocop:enable Metrics/AbcSize + # rubocop:enable Metrics/MethodLength private attr_reader :country_code, :registration_number, :city, :company_name, :postal_code + def match_type + Creditsafe::MatchType::ALLOWED[country_code.upcase.to_sym]&.first || + Creditsafe::MatchType::MATCH_BLOCK + end + def build_message(search_criteria) { "#{Creditsafe::Namespace::OPER}:countries" => { "#{Creditsafe::Namespace::CRED}:CountryCode" => country_code }, "#{Creditsafe::Namespace::OPER}:searchCriteria" => search_criteria } end - # rubocop:disable Style/CyclomaticComplexity, Metrics/AbcSize + # rubocop:disable Metrics/CyclomaticComplexity def check_search_criteria(search_criteria) if search_criteria[:country_code].nil? raise ArgumentError, "country_code is a required search criteria" end - if search_criteria[:country_code] != 'DE' && !search_criteria[:company_name].nil? - raise ArgumentError, "company name search is only possible for German searches" - end - unless only_registration_number_or_company_name_provided?(search_criteria) raise ArgumentError, "registration_number or company_name (not both) are " \ "required search criteria" end @@ -72,10 +78,10 @@ if search_criteria[:postal_code] && search_criteria[:country_code] != 'DE' raise ArgumentError, "Postal code is only supported for German searches" end end - # rubocop:enable Style/CyclomaticComplexity, Metrics/AbcSize + # rubocop:enable Metrics/CyclomaticComplexity def only_registration_number_or_company_name_provided?(search_criteria) search_criteria[:registration_number].nil? ^ search_criteria[:company_name].nil? end end