chronicle-etl 0.2.2 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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