ee_e_business_register 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.ee_business_register_credentials.yml.example +8 -0
- data/.rubocop.yml +8 -0
- data/CHANGELOG.md +93 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE.txt +21 -0
- data/Makefile +392 -0
- data/README.md +1294 -0
- data/Rakefile +12 -0
- data/lib/ee_e_business_register/client.rb +224 -0
- data/lib/ee_e_business_register/configuration.rb +160 -0
- data/lib/ee_e_business_register/errors.rb +98 -0
- data/lib/ee_e_business_register/models/classifier.rb +28 -0
- data/lib/ee_e_business_register/models/company.rb +2363 -0
- data/lib/ee_e_business_register/models/trust.rb +47 -0
- data/lib/ee_e_business_register/services/classifier_service.rb +176 -0
- data/lib/ee_e_business_register/services/company_service.rb +400 -0
- data/lib/ee_e_business_register/services/trusts_service.rb +136 -0
- data/lib/ee_e_business_register/types.rb +24 -0
- data/lib/ee_e_business_register/validation.rb +367 -0
- data/lib/ee_e_business_register/version.rb +5 -0
- data/lib/ee_e_business_register.rb +481 -0
- data/sig/ee_e_business_register.rbs +4 -0
- metadata +212 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "active_support"
|
|
4
|
+
require "active_support/core_ext"
|
|
5
|
+
require "net/http"
|
|
6
|
+
require "timeout"
|
|
7
|
+
|
|
8
|
+
# Ruby compatibility fix: alias the old timeout constant to new ones
|
|
9
|
+
Net::TimeoutError = Net::ReadTimeout unless defined?(Net::TimeoutError)
|
|
10
|
+
|
|
11
|
+
require_relative "ee_e_business_register/version"
|
|
12
|
+
require_relative "ee_e_business_register/errors"
|
|
13
|
+
require_relative "ee_e_business_register/configuration"
|
|
14
|
+
require_relative "ee_e_business_register/validation"
|
|
15
|
+
require_relative "ee_e_business_register/types"
|
|
16
|
+
require_relative "ee_e_business_register/models/company"
|
|
17
|
+
require_relative "ee_e_business_register/models/classifier"
|
|
18
|
+
require_relative "ee_e_business_register/models/trust"
|
|
19
|
+
require_relative "ee_e_business_register/client"
|
|
20
|
+
require_relative "ee_e_business_register/services/company_service"
|
|
21
|
+
require_relative "ee_e_business_register/services/classifier_service"
|
|
22
|
+
require_relative "ee_e_business_register/services/trusts_service"
|
|
23
|
+
|
|
24
|
+
# Estonian e-Business Register API Client
|
|
25
|
+
#
|
|
26
|
+
# A professional Ruby interface for accessing Estonian company data via the official
|
|
27
|
+
# e-Business Register SOAP API. Provides type-safe models and comprehensive error handling.
|
|
28
|
+
#
|
|
29
|
+
# ## Quick Start
|
|
30
|
+
#
|
|
31
|
+
# require 'ee_e_business_register'
|
|
32
|
+
#
|
|
33
|
+
# # Configure API credentials (required)
|
|
34
|
+
# EeEBusinessRegister.configure do |config|
|
|
35
|
+
# config.username = 'your_api_username'
|
|
36
|
+
# config.password = 'your_api_password'
|
|
37
|
+
# end
|
|
38
|
+
#
|
|
39
|
+
# # Find a company by registry code
|
|
40
|
+
# company = EeEBusinessRegister.find_company('16863232')
|
|
41
|
+
# puts company.name # => "Sorbeet Payments OÜ"
|
|
42
|
+
# puts company.active? # => true
|
|
43
|
+
# puts company.email # => "info@sorbeet.ee"
|
|
44
|
+
#
|
|
45
|
+
module EeEBusinessRegister
|
|
46
|
+
class << self
|
|
47
|
+
# ========================================
|
|
48
|
+
# CONFIGURATION
|
|
49
|
+
# ========================================
|
|
50
|
+
|
|
51
|
+
def configuration
|
|
52
|
+
@configuration ||= Configuration.new
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def configure
|
|
56
|
+
yield(configuration)
|
|
57
|
+
reset_client! # Reset client when configuration changes
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# ========================================
|
|
61
|
+
# PRIMARY API - Company Operations
|
|
62
|
+
# ========================================
|
|
63
|
+
|
|
64
|
+
# Find a company by its registry code
|
|
65
|
+
#
|
|
66
|
+
# @param code [String, Integer] 8-digit registry code
|
|
67
|
+
# @return [Company] Company object with basic info
|
|
68
|
+
# @raise [ArgumentError] If registry code is invalid
|
|
69
|
+
# @raise [APIError] If company not found or API fails
|
|
70
|
+
# @example
|
|
71
|
+
# company = EeEBusinessRegister.find_company('16863232')
|
|
72
|
+
# company = EeEBusinessRegister.find_company(16863232) # Also accepts integers
|
|
73
|
+
def find_company(code)
|
|
74
|
+
code = normalize_registry_code(code)
|
|
75
|
+
company_service.find_by_registry_code(code)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Search for companies by name
|
|
79
|
+
#
|
|
80
|
+
# @deprecated This method is no longer functional as the Estonian e-Business Register
|
|
81
|
+
# has removed the company name search operation from their API. The method will
|
|
82
|
+
# raise an APIError when called. Use find_company(registry_code) instead.
|
|
83
|
+
#
|
|
84
|
+
# @param query [String] Search query (partial match supported)
|
|
85
|
+
# @param limit [Integer] Max results (default: 10, max: 100)
|
|
86
|
+
# @return [Array<Company>] This method will raise an error
|
|
87
|
+
# @raise [APIError] Always raised - functionality no longer available
|
|
88
|
+
# @example
|
|
89
|
+
# # This will raise an APIError:
|
|
90
|
+
# # results = EeEBusinessRegister.search_companies('bank')
|
|
91
|
+
#
|
|
92
|
+
# # Use this instead:
|
|
93
|
+
# company = EeEBusinessRegister.find_company('16863232')
|
|
94
|
+
def search_companies(query, limit: 10)
|
|
95
|
+
company_service.search_by_name(query, limit)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# ========================================
|
|
99
|
+
# DETAILED DATA RETRIEVAL
|
|
100
|
+
# ========================================
|
|
101
|
+
|
|
102
|
+
# Get comprehensive company details
|
|
103
|
+
#
|
|
104
|
+
# @param code [String, Integer] 8-digit registry code
|
|
105
|
+
# @return [Hash] Complete company data including personnel, addresses, etc.
|
|
106
|
+
# @example
|
|
107
|
+
# details = EeEBusinessRegister.get_company_details('16863232')
|
|
108
|
+
# puts details[:general_data][:email]
|
|
109
|
+
# puts details[:personnel][:board_members]
|
|
110
|
+
def get_company_details(code)
|
|
111
|
+
code = normalize_registry_code(code)
|
|
112
|
+
company_service.get_detailed_data(code)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Get company's annual reports
|
|
116
|
+
#
|
|
117
|
+
# @param code [String, Integer] 8-digit registry code
|
|
118
|
+
# @return [Array<Hash>] List of annual reports
|
|
119
|
+
# @example
|
|
120
|
+
# reports = EeEBusinessRegister.get_annual_reports('16863232')
|
|
121
|
+
# latest = reports.first
|
|
122
|
+
# puts "Year #{latest[:year]}: #{latest[:status]}"
|
|
123
|
+
def get_annual_reports(code)
|
|
124
|
+
code = normalize_registry_code(code)
|
|
125
|
+
company_service.get_annual_reports(code)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Get a specific annual report
|
|
129
|
+
#
|
|
130
|
+
# @param code [String, Integer] 8-digit registry code
|
|
131
|
+
# @param year [Integer] Year of the report
|
|
132
|
+
# @param type [String] Report type: 'balance_sheet', 'income_statement', 'cash_flow'
|
|
133
|
+
# @return [Hash] Annual report data
|
|
134
|
+
# @example
|
|
135
|
+
# report = EeEBusinessRegister.get_annual_report('16863232', 2023)
|
|
136
|
+
# report = EeEBusinessRegister.get_annual_report('16863232', 2023, type: 'income_statement')
|
|
137
|
+
def get_annual_report(code, year, type: 'balance_sheet')
|
|
138
|
+
code = normalize_registry_code(code)
|
|
139
|
+
company_service.get_annual_report(code, year: year, report_type: type)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Get company's documents
|
|
143
|
+
#
|
|
144
|
+
# @param code [String, Integer] 8-digit registry code
|
|
145
|
+
# @return [Array<Hash>] List of documents
|
|
146
|
+
# @example
|
|
147
|
+
# docs = EeEBusinessRegister.get_documents('16863232')
|
|
148
|
+
# docs.each { |doc| puts "#{doc[:type]}: #{doc[:name]}" }
|
|
149
|
+
def get_documents(code)
|
|
150
|
+
code = normalize_registry_code(code)
|
|
151
|
+
company_service.get_documents(code)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Get company's representatives (who can legally represent the company)
|
|
155
|
+
#
|
|
156
|
+
# @param code [String, Integer] 8-digit registry code
|
|
157
|
+
# @return [Array<Hash>] List of people with representation rights
|
|
158
|
+
# @example
|
|
159
|
+
# reps = EeEBusinessRegister.get_representatives('16863232')
|
|
160
|
+
# reps.each { |rep| puts "#{rep[:name]} - #{rep[:role]}" }
|
|
161
|
+
def get_representatives(code)
|
|
162
|
+
code = normalize_registry_code(code)
|
|
163
|
+
company_service.get_representation(code)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Get person changes in the company
|
|
167
|
+
#
|
|
168
|
+
# @param code [String, Integer] 8-digit registry code
|
|
169
|
+
# @param from [Date, String] Start date (optional)
|
|
170
|
+
# @param to [Date, String] End date (optional)
|
|
171
|
+
# @return [Array<Hash>] List of person changes
|
|
172
|
+
# @example
|
|
173
|
+
# changes = EeEBusinessRegister.get_person_changes('16863232')
|
|
174
|
+
# changes = EeEBusinessRegister.get_person_changes('16863232', from: '2023-01-01')
|
|
175
|
+
def get_person_changes(code, from: nil, to: nil)
|
|
176
|
+
code = normalize_registry_code(code)
|
|
177
|
+
company_service.get_person_changes(code, from_date: from, to_date: to)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
# Get company's beneficial owners
|
|
181
|
+
#
|
|
182
|
+
# @param code [String, Integer] 8-digit registry code
|
|
183
|
+
# @return [Array<Hash>] List of beneficial owners
|
|
184
|
+
# @example
|
|
185
|
+
# owners = EeEBusinessRegister.get_beneficial_owners('10060701')
|
|
186
|
+
# owners.each { |owner| puts "#{owner[:eesnimi]} #{owner[:nimi]} - #{owner[:kontrolli_teostamise_viis_tekstina]}" }
|
|
187
|
+
def get_beneficial_owners(code)
|
|
188
|
+
code = normalize_registry_code(code)
|
|
189
|
+
company_service.get_beneficial_owners(code)
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# ========================================
|
|
193
|
+
# REFERENCE DATA (Classifiers)
|
|
194
|
+
# ========================================
|
|
195
|
+
|
|
196
|
+
# Get list of legal forms (OÜ, AS, MTÜ, etc.)
|
|
197
|
+
#
|
|
198
|
+
# @return [Array<Hash>] List of legal forms with codes and descriptions
|
|
199
|
+
# @example
|
|
200
|
+
# forms = EeEBusinessRegister.get_legal_forms
|
|
201
|
+
# forms.each { |f| puts "#{f[:code]}: #{f[:name]}" }
|
|
202
|
+
def get_legal_forms
|
|
203
|
+
classifier_service.get_classifier(:legal_forms)
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# Get list of company statuses
|
|
207
|
+
#
|
|
208
|
+
# @return [Array<Hash>] List of statuses (Active, Liquidation, etc.)
|
|
209
|
+
# @example
|
|
210
|
+
# statuses = EeEBusinessRegister.get_company_statuses
|
|
211
|
+
# active = statuses.find { |s| s[:code] == 'R' }
|
|
212
|
+
def get_company_statuses
|
|
213
|
+
classifier_service.get_classifier(:company_statuses)
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# Get any classifier by type
|
|
217
|
+
#
|
|
218
|
+
# @param type [Symbol, String] Classifier type
|
|
219
|
+
# @return [Array<Hash>] Classifier data
|
|
220
|
+
# @example
|
|
221
|
+
# regions = EeEBusinessRegister.get_classifier(:regions)
|
|
222
|
+
# countries = EeEBusinessRegister.get_classifier(:countries)
|
|
223
|
+
def get_classifier(type)
|
|
224
|
+
classifier_service.get_classifier(type)
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
# List all available classifiers
|
|
228
|
+
#
|
|
229
|
+
# @return [Hash] Map of classifier types to descriptions
|
|
230
|
+
def list_classifiers
|
|
231
|
+
{
|
|
232
|
+
legal_forms: "Company legal structures (OÜ, AS, MTÜ, etc.)",
|
|
233
|
+
company_statuses: "Registration statuses (Active, Liquidation, Deleted)",
|
|
234
|
+
person_roles: "Roles in companies (Board member, Shareholder, etc.)",
|
|
235
|
+
regions: "Estonian administrative regions",
|
|
236
|
+
countries: "Country codes and names",
|
|
237
|
+
report_types: "Annual report classifications",
|
|
238
|
+
company_subtypes: "Detailed company type classifications",
|
|
239
|
+
currencies: "Supported currency codes"
|
|
240
|
+
}
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
# ========================================
|
|
244
|
+
# UTILITIES & HELPERS
|
|
245
|
+
# ========================================
|
|
246
|
+
|
|
247
|
+
# Check if the API is accessible and working
|
|
248
|
+
#
|
|
249
|
+
# @return [Boolean] true if API is healthy, false otherwise
|
|
250
|
+
# @example
|
|
251
|
+
# if EeEBusinessRegister.check_health
|
|
252
|
+
# puts "API is working!"
|
|
253
|
+
# end
|
|
254
|
+
def check_health
|
|
255
|
+
client.healthy?
|
|
256
|
+
rescue
|
|
257
|
+
false
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
# Validate if a registry code has correct format
|
|
261
|
+
#
|
|
262
|
+
# @param code [String, Integer] Registry code to validate
|
|
263
|
+
# @return [Boolean] true if valid format, false otherwise
|
|
264
|
+
# @example
|
|
265
|
+
# EeEBusinessRegister.validate_code('16863232') # => true
|
|
266
|
+
# EeEBusinessRegister.validate_code('123') # => false
|
|
267
|
+
def validate_code(code)
|
|
268
|
+
Validation.validate_registry_code(code.to_s)
|
|
269
|
+
true
|
|
270
|
+
rescue
|
|
271
|
+
false
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
# Reset all cached services and clients
|
|
275
|
+
# Useful after configuration changes
|
|
276
|
+
#
|
|
277
|
+
# @return [Boolean] Always returns true
|
|
278
|
+
def reset!
|
|
279
|
+
reset_client!
|
|
280
|
+
@company_service = nil
|
|
281
|
+
@classifier_service = nil
|
|
282
|
+
@trusts_service = nil
|
|
283
|
+
true
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
# Get current configuration
|
|
287
|
+
#
|
|
288
|
+
# @return [Configuration] Current configuration object
|
|
289
|
+
def get_configuration
|
|
290
|
+
configuration
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
# ========================================
|
|
294
|
+
# CONVENIENCE METHODS
|
|
295
|
+
# ========================================
|
|
296
|
+
|
|
297
|
+
# Quick check if company exists and is active
|
|
298
|
+
#
|
|
299
|
+
# @param code [String, Integer] 8-digit registry code
|
|
300
|
+
# @return [Boolean] true if company exists and is active, false otherwise
|
|
301
|
+
# @example
|
|
302
|
+
# EeEBusinessRegister.company_active?('16863232') # => true
|
|
303
|
+
def company_active?(code)
|
|
304
|
+
company = find_company(code)
|
|
305
|
+
company&.active? || false
|
|
306
|
+
rescue
|
|
307
|
+
false
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
# Get company name quickly without full object
|
|
311
|
+
#
|
|
312
|
+
# @param code [String, Integer] 8-digit registry code
|
|
313
|
+
# @return [String, nil] Company name or nil if not found
|
|
314
|
+
# @example
|
|
315
|
+
# name = EeEBusinessRegister.company_name('16863232') # => "Sorbeet Payments OÜ"
|
|
316
|
+
def company_name(code)
|
|
317
|
+
company = find_company(code)
|
|
318
|
+
company&.name
|
|
319
|
+
rescue
|
|
320
|
+
nil
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
# Get company email quickly
|
|
324
|
+
#
|
|
325
|
+
# @param code [String, Integer] 8-digit registry code
|
|
326
|
+
# @return [String, nil] Company email or nil if not found
|
|
327
|
+
# @example
|
|
328
|
+
# email = EeEBusinessRegister.company_email('16863232') # => "info@sorbeet.ee"
|
|
329
|
+
def company_email(code)
|
|
330
|
+
company = find_company(code)
|
|
331
|
+
company&.email
|
|
332
|
+
rescue
|
|
333
|
+
nil
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
# Find companies by partial name match (case-insensitive)
|
|
337
|
+
#
|
|
338
|
+
# @deprecated This method is no longer functional as the Estonian e-Business Register
|
|
339
|
+
# has removed the company name search operation from their API. This method will
|
|
340
|
+
# always return an empty array. Use find_company(registry_code) instead.
|
|
341
|
+
#
|
|
342
|
+
# @param query [String] Search query (case-insensitive)
|
|
343
|
+
# @param limit [Integer] Max results (default: 5)
|
|
344
|
+
# @return [Array<Company>] Always returns empty array
|
|
345
|
+
# @example
|
|
346
|
+
# # This will return an empty array:
|
|
347
|
+
# # banks = EeEBusinessRegister.find_companies_like('bank')
|
|
348
|
+
#
|
|
349
|
+
# # Use this instead:
|
|
350
|
+
# company = EeEBusinessRegister.find_company('16863232')
|
|
351
|
+
def find_companies_like(query, limit: 5)
|
|
352
|
+
search_companies(query.to_s, limit: limit)
|
|
353
|
+
rescue
|
|
354
|
+
[]
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
# Check if registry code format is valid (doesn't verify existence)
|
|
358
|
+
#
|
|
359
|
+
# @param code [String, Integer] Registry code to check
|
|
360
|
+
# @return [Boolean] true if format is valid, false otherwise
|
|
361
|
+
# @example
|
|
362
|
+
# EeEBusinessRegister.valid_registry_code?('16863232') # => true
|
|
363
|
+
# EeEBusinessRegister.valid_registry_code?('123') # => false
|
|
364
|
+
def valid_registry_code?(code)
|
|
365
|
+
validate_code(code)
|
|
366
|
+
rescue
|
|
367
|
+
false
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
# Get latest annual report year for a company
|
|
371
|
+
#
|
|
372
|
+
# @param code [String, Integer] 8-digit registry code
|
|
373
|
+
# @return [Integer, nil] Latest report year or nil if no reports
|
|
374
|
+
# @example
|
|
375
|
+
# year = EeEBusinessRegister.latest_report_year('16863232') # => 2023
|
|
376
|
+
def latest_report_year(code)
|
|
377
|
+
reports = get_annual_reports(code)
|
|
378
|
+
return nil if reports.empty?
|
|
379
|
+
|
|
380
|
+
# Assuming reports are sorted by year, get the most recent
|
|
381
|
+
reports.first[:year]&.to_i
|
|
382
|
+
rescue
|
|
383
|
+
nil
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
# Check if company has filed reports for a given year
|
|
387
|
+
#
|
|
388
|
+
# @param code [String, Integer] 8-digit registry code
|
|
389
|
+
# @param year [Integer] Year to check
|
|
390
|
+
# @return [Boolean] true if reports exist for that year, false otherwise
|
|
391
|
+
# @example
|
|
392
|
+
# EeEBusinessRegister.has_reports_for_year?('16863232', 2023) # => true
|
|
393
|
+
def has_reports_for_year?(code, year)
|
|
394
|
+
reports = get_annual_reports(code)
|
|
395
|
+
reports.any? { |report| report[:year]&.to_i == year.to_i }
|
|
396
|
+
rescue
|
|
397
|
+
false
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
# Get company age in years (from registration date)
|
|
401
|
+
#
|
|
402
|
+
# @param code [String, Integer] 8-digit registry code
|
|
403
|
+
# @return [Integer, nil] Company age in years or nil if not found
|
|
404
|
+
# @example
|
|
405
|
+
# age = EeEBusinessRegister.company_age('16863232') # => 8
|
|
406
|
+
def company_age(code)
|
|
407
|
+
company = find_company(code)
|
|
408
|
+
return nil unless company&.registration_date
|
|
409
|
+
|
|
410
|
+
registration = Date.parse(company.registration_date)
|
|
411
|
+
((Date.today - registration) / 365.25).to_i
|
|
412
|
+
rescue
|
|
413
|
+
nil
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
# Normalize registry code to 8 digits
|
|
417
|
+
#
|
|
418
|
+
# @param code [String, Integer] Registry code to normalize
|
|
419
|
+
# @return [String] Normalized 8-digit code
|
|
420
|
+
# @raise [ArgumentError] If code format is invalid
|
|
421
|
+
# @example
|
|
422
|
+
# EeEBusinessRegister.normalize_registry_code('123') # => "00000123"
|
|
423
|
+
# EeEBusinessRegister.normalize_registry_code(16863232) # => "16863232"
|
|
424
|
+
def normalize_registry_code(code)
|
|
425
|
+
code = code.to_s.strip.gsub(/\D/, '') # Remove non-digits
|
|
426
|
+
|
|
427
|
+
# Pad with leading zeros if needed
|
|
428
|
+
code = code.rjust(8, '0') if code.length < 8
|
|
429
|
+
|
|
430
|
+
unless validate_code(code)
|
|
431
|
+
raise ArgumentError, "Invalid registry code '#{code}'. Estonian registry codes must be exactly 8 digits."
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
code
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
# Reset the configuration and cached services
|
|
438
|
+
#
|
|
439
|
+
# @return [Configuration] New configuration instance
|
|
440
|
+
# @example
|
|
441
|
+
# EeEBusinessRegister.reset_configuration!
|
|
442
|
+
def reset_configuration!
|
|
443
|
+
@configuration = nil
|
|
444
|
+
reset_services!
|
|
445
|
+
configuration
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
# Reset all cached services
|
|
449
|
+
def reset_services!
|
|
450
|
+
@company_service = nil
|
|
451
|
+
@classifier_service = nil
|
|
452
|
+
@trusts_service = nil
|
|
453
|
+
@client = nil
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
# Access to company service for testing
|
|
457
|
+
def company_service
|
|
458
|
+
@company_service ||= Services::CompanyService.new(client)
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
# Access to classifier service for testing
|
|
462
|
+
def classifier_service
|
|
463
|
+
@classifier_service ||= Services::ClassifierService.new(client)
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
private
|
|
467
|
+
|
|
468
|
+
def client
|
|
469
|
+
@client ||= Client.new(configuration)
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
def reset_client!
|
|
473
|
+
@client = nil
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
def trusts_service
|
|
477
|
+
@trusts_service ||= Services::TrustsService.new(client)
|
|
478
|
+
end
|
|
479
|
+
|
|
480
|
+
end
|
|
481
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: ee_e_business_register
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.3.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Angelos Kapsimanis
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: savon
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '2.15'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '2.15'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: nokogiri
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '1.16'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.16'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: activesupport
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '7.0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '7.0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: dry-struct
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '1.6'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '1.6'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: dry-types
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '1.7'
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '1.7'
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: minitest
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - "~>"
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '5.16'
|
|
89
|
+
type: :development
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - "~>"
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '5.16'
|
|
96
|
+
- !ruby/object:Gem::Dependency
|
|
97
|
+
name: webmock
|
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - "~>"
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '3.19'
|
|
103
|
+
type: :development
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - "~>"
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '3.19'
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
111
|
+
name: vcr
|
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - "~>"
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: '6.2'
|
|
117
|
+
type: :development
|
|
118
|
+
prerelease: false
|
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
+
requirements:
|
|
121
|
+
- - "~>"
|
|
122
|
+
- !ruby/object:Gem::Version
|
|
123
|
+
version: '6.2'
|
|
124
|
+
- !ruby/object:Gem::Dependency
|
|
125
|
+
name: rake
|
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - "~>"
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '13.0'
|
|
131
|
+
type: :development
|
|
132
|
+
prerelease: false
|
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - "~>"
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: '13.0'
|
|
138
|
+
- !ruby/object:Gem::Dependency
|
|
139
|
+
name: rubocop
|
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
|
141
|
+
requirements:
|
|
142
|
+
- - "~>"
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: '1.21'
|
|
145
|
+
type: :development
|
|
146
|
+
prerelease: false
|
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
148
|
+
requirements:
|
|
149
|
+
- - "~>"
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: '1.21'
|
|
152
|
+
description: A clean, professional Ruby client for accessing Estonian company data
|
|
153
|
+
from the e-Business Register. Built for FinTech applications with D&B-style conventions.
|
|
154
|
+
email:
|
|
155
|
+
- angelos@sorbet.ee
|
|
156
|
+
executables: []
|
|
157
|
+
extensions: []
|
|
158
|
+
extra_rdoc_files: []
|
|
159
|
+
files:
|
|
160
|
+
- ".ee_business_register_credentials.yml.example"
|
|
161
|
+
- ".rubocop.yml"
|
|
162
|
+
- CHANGELOG.md
|
|
163
|
+
- CODE_OF_CONDUCT.md
|
|
164
|
+
- LICENSE.txt
|
|
165
|
+
- Makefile
|
|
166
|
+
- README.md
|
|
167
|
+
- Rakefile
|
|
168
|
+
- lib/ee_e_business_register.rb
|
|
169
|
+
- lib/ee_e_business_register/client.rb
|
|
170
|
+
- lib/ee_e_business_register/configuration.rb
|
|
171
|
+
- lib/ee_e_business_register/errors.rb
|
|
172
|
+
- lib/ee_e_business_register/models/classifier.rb
|
|
173
|
+
- lib/ee_e_business_register/models/company.rb
|
|
174
|
+
- lib/ee_e_business_register/models/trust.rb
|
|
175
|
+
- lib/ee_e_business_register/services/classifier_service.rb
|
|
176
|
+
- lib/ee_e_business_register/services/company_service.rb
|
|
177
|
+
- lib/ee_e_business_register/services/trusts_service.rb
|
|
178
|
+
- lib/ee_e_business_register/types.rb
|
|
179
|
+
- lib/ee_e_business_register/validation.rb
|
|
180
|
+
- lib/ee_e_business_register/version.rb
|
|
181
|
+
- sig/ee_e_business_register.rbs
|
|
182
|
+
homepage: https://github.com/angeloskapis/ee_e_business_register
|
|
183
|
+
licenses:
|
|
184
|
+
- MIT
|
|
185
|
+
metadata:
|
|
186
|
+
homepage_uri: https://github.com/angeloskapis/ee_e_business_register
|
|
187
|
+
source_code_uri: https://github.com/angeloskapis/ee_e_business_register
|
|
188
|
+
changelog_uri: https://github.com/angeloskapis/ee_e_business_register/blob/main/CHANGELOG.md
|
|
189
|
+
documentation_uri: https://rubydoc.info/gems/ee_e_business_register
|
|
190
|
+
bug_tracker_uri: https://github.com/angeloskapis/ee_e_business_register/issues
|
|
191
|
+
wiki_uri: https://github.com/angeloskapis/ee_e_business_register/wiki
|
|
192
|
+
mailing_list_uri: https://github.com/angeloskapis/ee_e_business_register/discussions
|
|
193
|
+
funding_uri: https://github.com/sponsors/angeloskapis
|
|
194
|
+
rubygems_mfa_required: 'true'
|
|
195
|
+
rdoc_options: []
|
|
196
|
+
require_paths:
|
|
197
|
+
- lib
|
|
198
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
199
|
+
requirements:
|
|
200
|
+
- - ">="
|
|
201
|
+
- !ruby/object:Gem::Version
|
|
202
|
+
version: 3.1.0
|
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
|
+
requirements:
|
|
205
|
+
- - ">="
|
|
206
|
+
- !ruby/object:Gem::Version
|
|
207
|
+
version: '0'
|
|
208
|
+
requirements: []
|
|
209
|
+
rubygems_version: 3.6.9
|
|
210
|
+
specification_version: 4
|
|
211
|
+
summary: FinTech-ready client for Estonian e-Business Register API
|
|
212
|
+
test_files: []
|