prelands_rails 0.1.3 → 0.1.4

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