prelands_rails 0.1.3 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9caae497b31c6ccce8ac36da2a11964a5927ecd26c65a1d2611b834554a3d1e9
4
- data.tar.gz: 7a5a5865cfadc42691d8b683ccd5e79595936eb20e6aa90280306dbc8437e16c
3
+ metadata.gz: 9963abae54f24ecedee07af2eda355eb1dda5790141cc4579a4037f2bf12a7d3
4
+ data.tar.gz: 8e3608256bd2073be0abc06745e323e55748e8e7418b1907af2b446aa7c48018
5
5
  SHA512:
6
- metadata.gz: 8ae953646ca7c04d76d3ddbb3b80f1164e2e1381107cfd3feedb2e2c600f111750170e6ee4bfea0453c5206874ba121c3ca08c78bcc710cad463b78924668bdd
7
- data.tar.gz: 59ee4ab0cc3d4d5e54985db3aabdf0356095b950f2ac1e2f4ebdfb6b5180abe1135bf474fdc6272f4fb9bdfb69562ddff6c4637c367a1e59e779b4735938d29c
6
+ metadata.gz: 5f815e3ba1532e9e34d67931796a82621b9926421db2db46fcd96ee917271f5bbc155076be23e711a5218ca77c916658ffd96626ba3c2f41a8aed2fd7fae42c4
7
+ data.tar.gz: 822108a653b8296a33a542b195fef4c588b6b6f0d7796e148cf354fbe6b1f8ae421d2fc41616549b02534fae312ba2690c939400339ff0b3af7f6ac805f57423
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- prelands_rails (0.1.3)
4
+ prelands_rails (0.1.4)
5
5
  aws-sdk
6
6
  interactor (~> 3.0)
7
7
  interactor-contracts
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PrelandsRails
4
+ class RecompileSimpleSource
5
+ #
6
+ # Скачает и разместит в cache-директории zip-архив с исходником лендинга.
7
+ #
8
+ class DownloadZip
9
+ include ::PrelandsRails::AbstractInteractor
10
+ include ::Interactor
11
+ include ::Interactor::Contracts
12
+ include ::PrelandsRails::Base
13
+
14
+ expects do
15
+ required(:prelanding).filled #.value(type?: ::Preland)
16
+ end
17
+
18
+ assures do
19
+ required(:archive).filled # Rack::Test::UploadedFile | ActionDispatch::Http::UploadedFile
20
+ required(:tmp_dest).value(type?: String) # путь к временному файлу
21
+ end
22
+
23
+ def act
24
+ archive_url = prelanding.preland_simple_source.archive.url
25
+ destination = make_tmp_path
26
+
27
+ IO.copy_stream(Kernel.open(archive_url), destination)
28
+
29
+ context.archive = ActionDispatch::Http::UploadedFile.new(tempfile: destination)
30
+ context.tmp_dest = destination
31
+ end
32
+
33
+ on_breach { |breaches| bad_expects breaches }
34
+
35
+ delegate :prelanding,
36
+ :to => :context
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PrelandsRails
4
+ class RecompileSimpleSource
5
+ #
6
+ # Сначала удалить файлы преленда из директории +aws_prefix+, затем загрузить.
7
+ #
8
+ class Upload
9
+ include ::PrelandsRails::AbstractInteractor
10
+ include ::Interactor
11
+ include ::Interactor::Contracts
12
+ include ::PrelandsRails::UpdateSimpleSource::Upload::DeleteCompiledFiles
13
+
14
+ expects do
15
+ required(:archive).filled # Входящий архив с исходниками от фрилансера. Rack::Test::UploadedFile | ActionDispatch::Http::UploadedFile
16
+ required(:compiled_htmls).value(type?: Hash) # скомпилированные исходники { file_name[String] => compiled_content[String], ... }
17
+ required(:s3_credentials).schema do
18
+ required(:access_key).filled(:str?)
19
+ required(:secret_key).filled(:str?)
20
+ required(:region).filled(:str?)
21
+ end
22
+ required(:bucket_names).value(type?: Array)
23
+ required(:aws_prefix).value(type?: String)
24
+ required(:files_content).value(type?: Hash) # { file_name => file_content, ... }
25
+ end
26
+
27
+ assures do
28
+ end
29
+
30
+ def act
31
+ delete_compiled_files
32
+ result = ::PrelandsRails::CreateSimpleSource::Upload.call context
33
+ fail! errors: result.errors unless result.success?
34
+ end
35
+
36
+ on_breach { |breaches| bad_expects breaches }
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PrelandsRails
4
+ #
5
+ # Перекомпилировать преленд на основе уже загруженного в aws архива.
6
+ #
7
+ class RecompileSimpleSource
8
+ include ::PrelandsRails::AbstractInteractor
9
+ include ::Interactor::Organizer
10
+ include ::Interactor::Contracts
11
+
12
+ expects do
13
+ required(:prelanding).filled#.value(type?: ::Preland)
14
+ required(:static_js_path).value(type?: String)
15
+ required(:s3_credentials).schema do
16
+ required(:access_key).filled(:str?)
17
+ required(:secret_key).filled(:str?)
18
+ required(:region).filled(:str?)
19
+ end
20
+ required(:bucket_names).value(type?: Array)
21
+ end
22
+
23
+ before do
24
+ context.expected_locales = context.prelanding.locales.map(&:short_name)
25
+ context.aws_prefix = context.prelanding.preland_simple_source.aws_prefix
26
+ end
27
+
28
+ assures do
29
+ required(:expected_locales).filled(type?: Array)
30
+ required(:aws_prefix).value(type?: String)
31
+ required(:archive).filled
32
+ required(:tmp_dest).value(type?: String)
33
+ required(:incoming_locales).filled(type?: Array)
34
+ required(:files_content).value(type?: Hash)
35
+ required(:compiled_htmls).value(type?: Hash)
36
+ end
37
+
38
+ after do
39
+ clear_tmp_dest
40
+ context.prelanding.preland_simple_source.update_columns updated_at: Time.now
41
+ end
42
+
43
+ organize DownloadZip,
44
+ ::PrelandsRails::CreateSimpleSource::DetectIncomingLocales,
45
+ ::PrelandsRails::CreateSimpleSource::CheckZipFiles,
46
+ ::PrelandsRails::CreateSimpleSource::Compile,
47
+ Upload
48
+
49
+ on_breach { |breaches| bad_expects breaches }
50
+
51
+ private
52
+
53
+ def clear_tmp_dest
54
+ td = context.tmp_dest
55
+ File.delete(td) if File.exist?(td)
56
+ end
57
+ end
58
+ end
@@ -39,5 +39,9 @@ require 'prelands_rails/update_simple_source'
39
39
 
40
40
  require 'prelands_rails/validate_simple_source'
41
41
 
42
+ require 'prelands_rails/recompile_simple_source/upload'
43
+ require 'prelands_rails/recompile_simple_source/download_zip'
44
+ require 'prelands_rails/recompile_simple_source'
45
+
42
46
  module PrelandsRails
43
47
  end
@@ -5,7 +5,7 @@ end
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "prelands_rails"
8
- spec.version = "0.1.3"
8
+ spec.version = "0.1.4"
9
9
  spec.authors = ["C80609A"]
10
10
  spec.email = ["c080609a@gmail.com"]
11
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prelands_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - C80609A
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-27 00:00:00.000000000 Z
11
+ date: 2022-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: interactor
@@ -312,6 +312,9 @@ files:
312
312
  - lib/prelands_rails/create_simple_source/validate_zip_content/validate_incoming_files/zip_archive.rb
313
313
  - lib/prelands_rails/create_simple_source/validate_zip_content/validate_js.rb
314
314
  - lib/prelands_rails/create_simple_source/validate_zip_content/validate_js/js.rb
315
+ - lib/prelands_rails/recompile_simple_source.rb
316
+ - lib/prelands_rails/recompile_simple_source/download_zip.rb
317
+ - lib/prelands_rails/recompile_simple_source/upload.rb
315
318
  - lib/prelands_rails/update_simple_source.rb
316
319
  - lib/prelands_rails/update_simple_source/check_zip_files.rb
317
320
  - lib/prelands_rails/update_simple_source/compile.rb
@@ -343,7 +346,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
343
346
  - !ruby/object:Gem::Version
344
347
  version: '0'
345
348
  requirements: []
346
- rubygems_version: 3.1.6
349
+ rubygems_version: 3.1.4
347
350
  signing_key:
348
351
  specification_version: 4
349
352
  summary: Код, занимающийся валидацией и публикацией прелендов V4.