chronicle-etl 0.2.2 → 0.3.1

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +3 -0
  4. data/README.md +22 -15
  5. data/chronicle-etl.gemspec +13 -7
  6. data/lib/chronicle/etl/cli/connectors.rb +19 -7
  7. data/lib/chronicle/etl/cli/jobs.rb +38 -26
  8. data/lib/chronicle/etl/cli/main.rb +10 -2
  9. data/lib/chronicle/etl/config.rb +24 -3
  10. data/lib/chronicle/etl/exceptions.rb +13 -0
  11. data/lib/chronicle/etl/extraction.rb +12 -0
  12. data/lib/chronicle/etl/extractors/csv_extractor.rb +43 -37
  13. data/lib/chronicle/etl/extractors/extractor.rb +25 -4
  14. data/lib/chronicle/etl/extractors/file_extractor.rb +15 -33
  15. data/lib/chronicle/etl/extractors/helpers/filesystem_reader.rb +104 -0
  16. data/lib/chronicle/etl/extractors/json_extractor.rb +45 -0
  17. data/lib/chronicle/etl/extractors/stdin_extractor.rb +6 -1
  18. data/lib/chronicle/etl/job.rb +72 -0
  19. data/lib/chronicle/etl/job_definition.rb +89 -0
  20. data/lib/chronicle/etl/job_log.rb +95 -0
  21. data/lib/chronicle/etl/job_logger.rb +81 -0
  22. data/lib/chronicle/etl/loaders/csv_loader.rb +6 -6
  23. data/lib/chronicle/etl/loaders/loader.rb +2 -2
  24. data/lib/chronicle/etl/loaders/rest_loader.rb +16 -9
  25. data/lib/chronicle/etl/loaders/stdout_loader.rb +8 -3
  26. data/lib/chronicle/etl/loaders/table_loader.rb +58 -7
  27. data/lib/chronicle/etl/logger.rb +48 -0
  28. data/lib/chronicle/etl/models/activity.rb +15 -0
  29. data/lib/chronicle/etl/models/attachment.rb +14 -0
  30. data/lib/chronicle/etl/models/base.rb +119 -0
  31. data/lib/chronicle/etl/models/entity.rb +21 -0
  32. data/lib/chronicle/etl/models/generic.rb +23 -0
  33. data/lib/chronicle/etl/registry/connector_registration.rb +61 -0
  34. data/lib/chronicle/etl/registry/registry.rb +52 -0
  35. data/lib/chronicle/etl/registry/self_registering.rb +25 -0
  36. data/lib/chronicle/etl/runner.rb +66 -24
  37. data/lib/chronicle/etl/serializers/jsonapi_serializer.rb +25 -0
  38. data/lib/chronicle/etl/serializers/serializer.rb +27 -0
  39. data/lib/chronicle/etl/transformers/image_file_transformer.rb +253 -0
  40. data/lib/chronicle/etl/transformers/null_transformer.rb +11 -3
  41. data/lib/chronicle/etl/transformers/transformer.rb +42 -13
  42. data/lib/chronicle/etl/utils/binary_attachments.rb +21 -0
  43. data/lib/chronicle/etl/utils/hash_utilities.rb +19 -0
  44. data/lib/chronicle/etl/utils/progress_bar.rb +3 -1
  45. data/lib/chronicle/etl/utils/text_recognition.rb +15 -0
  46. data/lib/chronicle/etl/version.rb +1 -1
  47. data/lib/chronicle/etl.rb +16 -1
  48. metadata +139 -36
  49. data/CHANGELOG.md +0 -23
  50. data/Gemfile.lock +0 -85
  51. data/lib/chronicle/etl/catalog.rb +0 -102
  52. data/lib/chronicle/etl/transformers/json_transformer.rb +0 -11
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chronicle-etl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Louis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-29 00:00:00.000000000 Z
11
+ date: 2022-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: thor
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: chronic_duration
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: '0.20'
33
+ version: 0.10.6
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: '0.20'
40
+ version: 0.10.6
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: colorize
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,75 +53,145 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: 0.8.1
41
55
  - !ruby/object:Gem::Dependency
42
- name: tty-table
56
+ name: marcel
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '0.11'
61
+ version: 1.0.2
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '0.11'
68
+ version: 1.0.2
55
69
  - !ruby/object:Gem::Dependency
56
- name: tty-progressbar
70
+ name: mini_exiftool
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0.17'
75
+ version: '2.10'
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0.17'
82
+ version: '2.10'
69
83
  - !ruby/object:Gem::Dependency
70
- name: bundler
84
+ name: nokogiri
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '2.1'
76
- type: :development
89
+ version: '1.13'
90
+ type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '2.1'
96
+ version: '1.13'
83
97
  - !ruby/object:Gem::Dependency
84
- name: rake
98
+ name: runcom
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '13.0'
90
- type: :development
103
+ version: '6.2'
104
+ type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '13.0'
110
+ version: '6.2'
97
111
  - !ruby/object:Gem::Dependency
98
- name: rspec
112
+ name: sequel
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '3.9'
117
+ version: '5.35'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '5.35'
125
+ - !ruby/object:Gem::Dependency
126
+ name: sqlite3
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.4'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.4'
139
+ - !ruby/object:Gem::Dependency
140
+ name: thor
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.20'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.20'
153
+ - !ruby/object:Gem::Dependency
154
+ name: tty-progressbar
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.17'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.17'
167
+ - !ruby/object:Gem::Dependency
168
+ name: tty-table
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.11'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.11'
181
+ - !ruby/object:Gem::Dependency
182
+ name: bundler
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '2.1'
104
188
  type: :development
105
189
  prerelease: false
106
190
  version_requirements: !ruby/object:Gem::Requirement
107
191
  requirements:
108
192
  - - "~>"
109
193
  - !ruby/object:Gem::Version
110
- version: '3.9'
194
+ version: '2.1'
111
195
  - !ruby/object:Gem::Dependency
112
196
  name: pry-byebug
113
197
  requirement: !ruby/object:Gem::Requirement
@@ -123,33 +207,33 @@ dependencies:
123
207
  - !ruby/object:Gem::Version
124
208
  version: '3.9'
125
209
  - !ruby/object:Gem::Dependency
126
- name: runcom
210
+ name: rake
127
211
  requirement: !ruby/object:Gem::Requirement
128
212
  requirements:
129
213
  - - "~>"
130
214
  - !ruby/object:Gem::Version
131
- version: '6.2'
215
+ version: '13.0'
132
216
  type: :development
133
217
  prerelease: false
134
218
  version_requirements: !ruby/object:Gem::Requirement
135
219
  requirements:
136
220
  - - "~>"
137
221
  - !ruby/object:Gem::Version
138
- version: '6.2'
222
+ version: '13.0'
139
223
  - !ruby/object:Gem::Dependency
140
- name: redcarpet
224
+ name: rspec
141
225
  requirement: !ruby/object:Gem::Requirement
142
226
  requirements:
143
227
  - - "~>"
144
228
  - !ruby/object:Gem::Version
145
- version: '3.5'
229
+ version: '3.9'
146
230
  type: :development
147
231
  prerelease: false
148
232
  version_requirements: !ruby/object:Gem::Requirement
149
233
  requirements:
150
234
  - - "~>"
151
235
  - !ruby/object:Gem::Version
152
- version: '3.5'
236
+ version: '3.9'
153
237
  description: Chronicle-ETL allows you to extract personal data from a variety of services,
154
238
  transformer it, and load it.
155
239
  email:
@@ -165,10 +249,8 @@ files:
165
249
  - ".ruby-version"
166
250
  - ".travis.yml"
167
251
  - ".yardopts"
168
- - CHANGELOG.md
169
252
  - CODE_OF_CONDUCT.md
170
253
  - Gemfile
171
- - Gemfile.lock
172
254
  - LICENSE.txt
173
255
  - README.md
174
256
  - Rakefile
@@ -177,36 +259,57 @@ files:
177
259
  - chronicle-etl.gemspec
178
260
  - exe/chronicle-etl
179
261
  - lib/chronicle/etl.rb
180
- - lib/chronicle/etl/catalog.rb
181
262
  - lib/chronicle/etl/cli/connectors.rb
182
263
  - lib/chronicle/etl/cli/jobs.rb
183
264
  - lib/chronicle/etl/cli/main.rb
184
265
  - lib/chronicle/etl/cli/subcommand_base.rb
185
266
  - lib/chronicle/etl/config.rb
186
267
  - lib/chronicle/etl/exceptions.rb
268
+ - lib/chronicle/etl/extraction.rb
187
269
  - lib/chronicle/etl/extractors/csv_extractor.rb
188
270
  - lib/chronicle/etl/extractors/extractor.rb
189
271
  - lib/chronicle/etl/extractors/file_extractor.rb
272
+ - lib/chronicle/etl/extractors/helpers/filesystem_reader.rb
273
+ - lib/chronicle/etl/extractors/json_extractor.rb
190
274
  - lib/chronicle/etl/extractors/stdin_extractor.rb
275
+ - lib/chronicle/etl/job.rb
276
+ - lib/chronicle/etl/job_definition.rb
277
+ - lib/chronicle/etl/job_log.rb
278
+ - lib/chronicle/etl/job_logger.rb
191
279
  - lib/chronicle/etl/loaders/csv_loader.rb
192
280
  - lib/chronicle/etl/loaders/loader.rb
193
281
  - lib/chronicle/etl/loaders/rest_loader.rb
194
282
  - lib/chronicle/etl/loaders/stdout_loader.rb
195
283
  - lib/chronicle/etl/loaders/table_loader.rb
284
+ - lib/chronicle/etl/logger.rb
285
+ - lib/chronicle/etl/models/activity.rb
286
+ - lib/chronicle/etl/models/attachment.rb
287
+ - lib/chronicle/etl/models/base.rb
288
+ - lib/chronicle/etl/models/entity.rb
289
+ - lib/chronicle/etl/models/generic.rb
290
+ - lib/chronicle/etl/registry/connector_registration.rb
291
+ - lib/chronicle/etl/registry/registry.rb
292
+ - lib/chronicle/etl/registry/self_registering.rb
196
293
  - lib/chronicle/etl/runner.rb
197
- - lib/chronicle/etl/transformers/json_transformer.rb
294
+ - lib/chronicle/etl/serializers/jsonapi_serializer.rb
295
+ - lib/chronicle/etl/serializers/serializer.rb
296
+ - lib/chronicle/etl/transformers/image_file_transformer.rb
198
297
  - lib/chronicle/etl/transformers/null_transformer.rb
199
298
  - lib/chronicle/etl/transformers/transformer.rb
299
+ - lib/chronicle/etl/utils/binary_attachments.rb
300
+ - lib/chronicle/etl/utils/hash_utilities.rb
200
301
  - lib/chronicle/etl/utils/progress_bar.rb
302
+ - lib/chronicle/etl/utils/text_recognition.rb
201
303
  - lib/chronicle/etl/version.rb
202
304
  homepage: https://github.com/chronicle-app
203
305
  licenses:
204
306
  - MIT
205
307
  metadata:
308
+ allowed_push_host: https://rubygems.org
206
309
  homepage_uri: https://github.com/chronicle-app
207
310
  source_code_uri: https://github.com/chronicle-app/chronicle-etl
208
- changelog_uri: https://github.com/chronicle-app/chronicle-etl/blob/master/CHANGELOG.md
209
- post_install_message:
311
+ changelog_uri: https://github.com/chronicle-app/chronicle-etl/releases
312
+ post_install_message:
210
313
  rdoc_options: []
211
314
  require_paths:
212
315
  - lib
@@ -222,7 +325,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
325
  version: '0'
223
326
  requirements: []
224
327
  rubygems_version: 3.1.2
225
- signing_key:
328
+ signing_key:
226
329
  specification_version: 4
227
330
  summary: ETL tool for personal data
228
331
  test_files: []
data/CHANGELOG.md DELETED
@@ -1,23 +0,0 @@
1
- # Changelog
2
-
3
- This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
-
5
- ## [0.1.4] - 2020-08-18
6
- ### Updated
7
- - Better display of available ETL classes
8
- - Updated documentation
9
-
10
- ## [0.1.3] - 2020-08-13
11
- ### Added
12
- - Ability to list all available ETL classes
13
- - Refactored E, T, L module and class structure
14
- - Better progress bar
15
-
16
- ## [0.1.2] - 2020-08-02
17
- ### Added
18
- - This changelog
19
- - Ability to use extractors, transformers, and loaders from other gems
20
-
21
- ## [0.1.0] - 2020-08-01
22
- ### Added
23
- - Basic job runner and ETL classes
data/Gemfile.lock DELETED
@@ -1,85 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- chronicle-etl (0.2.2)
5
- colorize (~> 0.8.1)
6
- thor (~> 0.20)
7
- tty-progressbar (~> 0.17)
8
- tty-table (~> 0.11)
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- byebug (11.1.3)
14
- coderay (1.1.3)
15
- colorize (0.8.1)
16
- diff-lcs (1.4.4)
17
- equatable (0.6.1)
18
- method_source (1.0.0)
19
- necromancer (0.6.0)
20
- pastel (0.7.4)
21
- equatable (~> 0.6)
22
- tty-color (~> 0.5)
23
- pry (0.13.1)
24
- coderay (~> 1.1)
25
- method_source (~> 1.0)
26
- pry-byebug (3.9.0)
27
- byebug (~> 11.0)
28
- pry (~> 0.13.0)
29
- rake (13.0.1)
30
- redcarpet (3.5.0)
31
- refinements (7.7.0)
32
- rspec (3.9.0)
33
- rspec-core (~> 3.9.0)
34
- rspec-expectations (~> 3.9.0)
35
- rspec-mocks (~> 3.9.0)
36
- rspec-core (3.9.2)
37
- rspec-support (~> 3.9.3)
38
- rspec-expectations (3.9.2)
39
- diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.9.0)
41
- rspec-mocks (3.9.1)
42
- diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.9.0)
44
- rspec-support (3.9.3)
45
- runcom (6.2.0)
46
- refinements (~> 7.4)
47
- xdg (~> 4.0)
48
- strings (0.1.8)
49
- strings-ansi (~> 0.1)
50
- unicode-display_width (~> 1.5)
51
- unicode_utils (~> 1.4)
52
- strings-ansi (0.1.0)
53
- thor (0.20.3)
54
- tty-color (0.5.2)
55
- tty-cursor (0.7.1)
56
- tty-progressbar (0.17.0)
57
- strings-ansi (~> 0.1.0)
58
- tty-cursor (~> 0.7)
59
- tty-screen (~> 0.7)
60
- unicode-display_width (~> 1.6)
61
- tty-screen (0.8.1)
62
- tty-table (0.11.0)
63
- equatable (~> 0.6)
64
- necromancer (~> 0.5)
65
- pastel (~> 0.7.2)
66
- strings (~> 0.1.5)
67
- tty-screen (~> 0.7)
68
- unicode-display_width (1.7.0)
69
- unicode_utils (1.4.0)
70
- xdg (4.2.0)
71
-
72
- PLATFORMS
73
- ruby
74
-
75
- DEPENDENCIES
76
- bundler (~> 2.1)
77
- chronicle-etl!
78
- pry-byebug (~> 3.9)
79
- rake (~> 13.0)
80
- redcarpet (~> 3.5)
81
- rspec (~> 3.9)
82
- runcom (~> 6.2)
83
-
84
- BUNDLED WITH
85
- 2.1.4
@@ -1,102 +0,0 @@
1
- module Chronicle
2
- module ETL
3
- # Utility methods to catalogue which Extractor, Transformer, and
4
- # Loader connector classes are available to chronicle-etl
5
- module Catalog
6
- PLUGINS = ['email', 'bash']
7
- BUILTIN = {
8
- extractor: ['stdin', 'json', 'csv', 'file'],
9
- transformer: ['null'],
10
- loader: ['stdout', 'csv', 'table', 'rest']
11
- }.freeze
12
-
13
- # Return which ETL connectors are available, both built in and externally-defined
14
- def self.available_classes
15
- # TODO: have a registry of plugins
16
-
17
- # Attempt to load each chronicle plugin that we might know about so
18
- # that we can later search for subclasses to build our list of
19
- # available classes
20
- PLUGINS.each do |plugin|
21
- require "chronicle/#{plugin}"
22
- rescue LoadError
23
- # this will happen if the gem isn't available globally
24
- end
25
-
26
- parent_klasses = [
27
- ::Chronicle::ETL::Extractor,
28
- ::Chronicle::ETL::Transformer,
29
- ::Chronicle::ETL::Loader
30
- ]
31
- klasses = []
32
- parent_klasses.map do |parent|
33
- klasses += ::ObjectSpace.each_object(::Class).select { |klass| klass < parent }
34
- end
35
-
36
- klasses.map do |klass|
37
- {
38
- name: klass.name,
39
- built_in: klass.built_in?,
40
- provider: klass.provider,
41
- phase: klass.phase
42
- }
43
- end
44
- end
45
-
46
- # For a given connector identifier, return the class (either builtin, or from a
47
- # external chronicle gem)
48
- def self.identifier_to_klass(identifier:, phase:)
49
- if BUILTIN[phase].include? identifier
50
- load_builtin_klass(name: identifier, phase: phase)
51
- else
52
- provider, name = identifier.split(':')
53
- name ||= ''
54
- load_provider_klass(provider: provider, name: name, phase: phase)
55
- end
56
- end
57
-
58
- # Returns whether a class is an Extractor, Transformer, or Loader
59
- def phase
60
- ancestors = self.ancestors
61
- return :extractor if ancestors.include? Chronicle::ETL::Extractor
62
- return :transformer if ancestors.include? Chronicle::ETL::Transformer
63
- return :loader if ancestors.include? Chronicle::ETL::Loader
64
- end
65
-
66
- # Returns which third-party provider this connector is associated wtih
67
- def provider
68
- # TODO: needs better convention for a gem reporting its provider name
69
- provider = to_s.split('::')[1].downcase
70
- provider == 'etl' ? 'chronicle' : provider
71
- end
72
-
73
- # Returns whether this connector is a built-in one
74
- def built_in?
75
- to_s.include? 'Chronicle::ETL'
76
- end
77
-
78
- private
79
-
80
- def self.load_builtin_klass(name:, phase:)
81
- klass_str = "Chronicle::ETL::#{name.capitalize}#{phase.capitalize}"
82
- begin
83
- Object.const_get(klass_str)
84
- rescue NameError => e
85
- raise ConnectorNotAvailableError.new("Connector not found", name: name)
86
- end
87
- end
88
-
89
- def self.load_provider_klass(name: '', phase:, provider:)
90
- begin
91
- require "chronicle/#{provider}"
92
- klass_str = "Chronicle::#{provider.capitalize}::#{name.capitalize}#{phase.capitalize}"
93
- Object.const_get(klass_str)
94
- rescue LoadError => e
95
- raise ProviderNotAvailableError.new("Provider '#{provider.capitalize}' could not be loaded", provider: provider)
96
- rescue NameError => e
97
- raise ProviderConnectorNotAvailableError.new("Connector '#{name}' in '#{provider}' could not be found", provider: provider, name: name)
98
- end
99
- end
100
- end
101
- end
102
- end
@@ -1,11 +0,0 @@
1
- require 'json'
2
-
3
- module Chronicle
4
- module ETL
5
- class JsonTransformer < Chronicle::ETL::Transformer
6
- def transform data
7
- return JSON.parse(data)
8
- end
9
- end
10
- end
11
- end