lib/creditsafe/request/find_company.rb in creditsafe-0.3.1 vs lib/creditsafe/request/find_company.rb in creditsafe-0.3.2
- old
+ new
@@ -5,51 +5,71 @@
module Creditsafe
module Request
class FindCompany
def initialize(search_criteria)
check_search_criteria(search_criteria)
-
@country_code = search_criteria[:country_code]
@registration_number = search_criteria[:registration_number]
+ @company_name = search_criteria[:company_name]
@city = search_criteria[:city]
end
def message
- search_criteria = {
- "#{Creditsafe::Namespace::DAT}:RegistrationNumber" =>
- registration_number
- }
+ search_criteria = {}
- unless city.nil?
- search_criteria["#{Creditsafe::Namespace::DAT}:Address"] =
- { "#{Creditsafe::Namespace::DAT}:City" => city }
+ search_criteria["#{Creditsafe::Namespace::DAT}:Name"] = {
+ '@MatchType' => 'MatchBlock',
+ :content! => company_name
+ } unless company_name.nil?
+
+ unless registration_number.nil?
+ search_criteria["#{Creditsafe::Namespace::DAT}:RegistrationNumber"] =
+ registration_number
end
+ search_criteria["#{Creditsafe::Namespace::DAT}:Address"] = {
+ "#{Creditsafe::Namespace::DAT}:City" => city
+ } unless city.nil?
+
+ build_message(search_criteria)
+ end
+
+ private
+
+ attr_reader :country_code, :registration_number, :city, :company_name
+
+ def build_message(search_criteria)
{
"#{Creditsafe::Namespace::OPER}:countries" => {
"#{Creditsafe::Namespace::CRED}:CountryCode" => country_code
},
"#{Creditsafe::Namespace::OPER}:searchCriteria" => search_criteria
}
end
- private
-
- attr_reader :country_code, :registration_number, :city
-
+ # rubocop:disable Style/CyclomaticComplexity, Metrics/AbcSize
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[:registration_number].nil?
- raise ArgumentError,
- "registration_number is a required search criteria"
+ 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
+
if search_criteria[:city] && search_criteria[:country_code] != 'DE'
raise ArgumentError, "city is only supported for German searches"
end
+ end
+ # rubocop:enable Style/CyclomaticComplexity, Metrics/AbcSize
+
+ def only_registration_number_or_company_name_provided?(search_criteria)
+ search_criteria[:registration_number].nil? ^ search_criteria[:company_name].nil?
end
end
end
end