inst_data_shipper 0.2.3 → 0.2.4
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 +4 -4
- data/app/models/inst_data_shipper/dump_batch.rb +0 -2
- data/db/migrate/20240301090836_create_inst_data_shipper_dump_batches.rb +0 -2
- data/lib/inst_data_shipper/data_sources/canvas_reports.rb +45 -9
- data/lib/inst_data_shipper/version.rb +1 -1
- data/spec/dummy/tmp/local_secret.txt +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2f09c00768c10bfc79fb35c689131740739a8889c81ee02186f4bd9e70b446b
|
4
|
+
data.tar.gz: 9550a780011a5fa988fff785429a637175a16634911186e7bb7625e80ac09141
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5f4fd607175698b654476ed4ef50d600be06b380071469e9fda824433d3d7014bacbecc53cb25238a5ade8d1ce5b302192bc7aa8f48c922e0ae029b56d4fcac
|
7
|
+
data.tar.gz: 6d069aa519374716b5690ba2428f6f4ec2000ae36b716921e36aab9160d126dc53a4db1f8d7614d97d82849d62138d7464ffd4f719c39ee226f7becad7b50514
|
@@ -42,7 +42,11 @@ module InstDataShipper
|
|
42
42
|
term.is_a?(Term) ? term.canvas_id : term
|
43
43
|
end
|
44
44
|
|
45
|
-
table_def = lookup_table_schema
|
45
|
+
table_def = lookup_table_schema(kwargs[:schema_name], report_name) || {}
|
46
|
+
if kwargs[:incremental_config]
|
47
|
+
table_def = table_def.dup
|
48
|
+
table_def[:incremental] = kwargs.delete(:incremental_config)
|
49
|
+
end
|
46
50
|
|
47
51
|
_resolve_report_incremenal_parameters(table_def, params)
|
48
52
|
|
@@ -97,19 +101,51 @@ module InstDataShipper
|
|
97
101
|
end
|
98
102
|
|
99
103
|
def _process_canvas_report(report:, schema_name: nil)
|
100
|
-
|
104
|
+
file_path = "#{working_dir}/temp_report"
|
105
|
+
IO.copy_stream(URI.parse(report['attachment']['url']).open, file_path)
|
101
106
|
|
102
|
-
|
107
|
+
if report['attachment']['content-type'] == 'application/zip'
|
108
|
+
unzipped_file_path = "#{file_path}_unzipped"
|
103
109
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
110
|
+
Zip::File.open(file_path) do |zip_file|
|
111
|
+
zip_file.each do |f|
|
112
|
+
f_path = File.join(unzipped_file_path, f.name)
|
113
|
+
FileUtils.mkdir_p(File.dirname(f_path))
|
114
|
+
zip_file.extract(f, f_path) unless File.exist?(f_path)
|
108
115
|
end
|
109
116
|
end
|
110
|
-
}
|
111
117
|
|
112
|
-
|
118
|
+
Dir[unzipped_file_path + "/*.csv"].sort.each do |file_path|
|
119
|
+
file_name = file_path.split("/").last.split(".").first
|
120
|
+
|
121
|
+
# If a schema_name Hash is provided, only process files that are explictly mapped
|
122
|
+
next if schema_name && !schema_name[file_name]
|
123
|
+
|
124
|
+
table_def = lookup_table_schema!(schema_name&.[](file_name), report[:report])
|
125
|
+
|
126
|
+
inner_block = ->(file) {
|
127
|
+
CSV.foreach(file_path, headers: true) do |m|
|
128
|
+
file << table_def[:columns].map do |c|
|
129
|
+
instance_exec(m, &c[:block])
|
130
|
+
end
|
131
|
+
end
|
132
|
+
}
|
133
|
+
|
134
|
+
upload_data(table_def, extra: report['id'], &inner_block)
|
135
|
+
end
|
136
|
+
else
|
137
|
+
table_def = lookup_table_schema!(schema_name, report[:report])
|
138
|
+
|
139
|
+
inner_block = ->(file) {
|
140
|
+
CSV.foreach(file_path, headers: true) do |m|
|
141
|
+
file << table_def[:columns].map do |c|
|
142
|
+
instance_exec(m, &c[:block])
|
143
|
+
end
|
144
|
+
end
|
145
|
+
}
|
146
|
+
|
147
|
+
upload_data(table_def, extra: report['id'], &inner_block)
|
148
|
+
end
|
113
149
|
end
|
114
150
|
|
115
151
|
def _resolve_report_incremenal_parameters(table_def, params)
|
@@ -0,0 +1 @@
|
|
1
|
+
6ddf19e3f9f936190c3c79bc546382849bcf6efb4205cbe13797b683ec9a3dbc02cb87e348121c3502809d9475683c26b12c92d973d571953ebb50b0c4cc3641
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inst_data_shipper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Instructure CustomDev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -378,6 +378,7 @@ files:
|
|
378
378
|
- spec/dummy/config/routes.rb
|
379
379
|
- spec/dummy/config/secrets.yml
|
380
380
|
- spec/dummy/db/schema.rb
|
381
|
+
- spec/dummy/tmp/local_secret.txt
|
381
382
|
- spec/inst_data_shipper/destinations/hosted_data_spec.rb
|
382
383
|
- spec/inst_data_shipper/dumper_spec.rb
|
383
384
|
- spec/spec_helper.rb
|
@@ -424,6 +425,7 @@ test_files:
|
|
424
425
|
- spec/dummy/config/secrets.yml
|
425
426
|
- spec/dummy/config.ru
|
426
427
|
- spec/dummy/db/schema.rb
|
428
|
+
- spec/dummy/tmp/local_secret.txt
|
427
429
|
- spec/inst_data_shipper/destinations/hosted_data_spec.rb
|
428
430
|
- spec/inst_data_shipper/dumper_spec.rb
|
429
431
|
- spec/spec_helper.rb
|