zendesk_apps_support 4.16.0 → 4.17.0

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: 7629b25072aa14d2fc633c4061efe052835f0893e221c131881124ecf1bb9989
4
- data.tar.gz: 31827636b35c8b029e80e96cf7511b17f25b64319ba26725bc57fee0c38abda8
3
+ metadata.gz: b9e6c1b0f73a414798ff651dfa81572508499a30a54c4edf6e5fd09b13391424
4
+ data.tar.gz: a889c5ccf500f94aae9bc6ab1cd13a64dbe9cb9b0f916dbf048e5367381a5187
5
5
  SHA512:
6
- metadata.gz: c84e515174af4129cd536c670279113588893de7f684523edd35521dac6fa0f1d1c33e1b7648239e56e88ef697899f11bb87c64f250c960a1dd4296709e35752
7
- data.tar.gz: 1279372798bf6ba5a1672408046d308ae7feaf00d99cfdddb96122ce1ad4be3780e2c49223be5311146426ed4e5549c1647c8503401659b001f648a3946a8196
6
+ metadata.gz: 22f0f135b839ee5bba993f1907f713bfd0585272bbd928e79fbae9c47d1e0e5f0bdae08b91f85f5ab84aad223f1c6ea844b71a176ba29d7bbaa303ef5bdf77be
7
+ data.tar.gz: 0e94c79424df86521f7887b40829e87704b923d43d22f439127740c25f4f566a990583b132a70acd7a551998e07bfc1b23da47f24af4342006017f19f6e61b06
@@ -21,6 +21,7 @@ module ZendeskAppsSupport
21
21
  autoload :ValidationError, 'zendesk_apps_support/validations/validation_error'
22
22
  autoload :Manifest, 'zendesk_apps_support/validations/manifest'
23
23
  autoload :Marketplace, 'zendesk_apps_support/validations/marketplace'
24
+ autoload :Mime, 'zendesk_apps_support/validations/mime'
24
25
  autoload :Secrets, 'zendesk_apps_support/validations/secrets'
25
26
  autoload :Source, 'zendesk_apps_support/validations/source'
26
27
  autoload :Templates, 'zendesk_apps_support/validations/templates'
@@ -15,6 +15,10 @@ module ZendeskAppsSupport
15
15
  File.read @file.path
16
16
  end
17
17
 
18
+ def extension
19
+ File.extname relative_path
20
+ end
21
+
18
22
  def =~(regex)
19
23
  relative_path =~ regex
20
24
  end
@@ -46,6 +46,7 @@ module ZendeskAppsSupport
46
46
 
47
47
  errors << Validations::Banner.call(self) if has_banner?
48
48
  errors << Validations::Svg.call(self) if has_svgs?
49
+ errors << Validations::Mime.call(self)
49
50
 
50
51
  # warning only validators
51
52
  Validations::Secrets.call(self)
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mimemagic'
4
+
5
+ module ZendeskAppsSupport
6
+ module Validations
7
+ module Mime
8
+ UNSUPPORTED_MIME_TYPES = %w[
9
+ vnd.rar rar zip gzip pdf doc docx avi bin bz bz2 csh sh jar mp3 mpeg odt pptx ppt xls xlsx 7z
10
+ ].freeze
11
+
12
+ class << self
13
+ def call(package)
14
+ unsupported_files =
15
+ package.files.find_all { |app_file| block_listed?(app_file) }.map(&:relative_path)
16
+
17
+ [mime_type_warning(unsupported_files)] if unsupported_files.any?
18
+ end
19
+
20
+ private
21
+
22
+ def block_listed?(app_file)
23
+ mime_type = MimeMagic.by_magic(app_file.read)
24
+
25
+ content_subtype = mime_type.subtype if mime_type
26
+ extension_name = app_file.extension.delete('.')
27
+
28
+ ([content_subtype, extension_name] & UNSUPPORTED_MIME_TYPES).any?
29
+ end
30
+
31
+ def mime_type_warning(file_names)
32
+ ValidationError.new(
33
+ :unsupported_mime_type_detected,
34
+ file_names: file_names.join(', '),
35
+ count: file_names.count
36
+ )
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_apps_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.16.0
4
+ version: 4.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James A. Rosen
@@ -153,6 +153,20 @@ dependencies:
153
153
  - - '='
154
154
  - !ruby/object:Gem::Version
155
155
  version: 0.9.10
156
+ - !ruby/object:Gem::Dependency
157
+ name: mimemagic
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: 0.3.3
163
+ type: :runtime
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: 0.3.3
156
170
  - !ruby/object:Gem::Dependency
157
171
  name: rspec
158
172
  requirement: !ruby/object:Gem::Requirement
@@ -261,6 +275,7 @@ files:
261
275
  - lib/zendesk_apps_support/validations/banner.rb
262
276
  - lib/zendesk_apps_support/validations/manifest.rb
263
277
  - lib/zendesk_apps_support/validations/marketplace.rb
278
+ - lib/zendesk_apps_support/validations/mime.rb
264
279
  - lib/zendesk_apps_support/validations/requirements.rb
265
280
  - lib/zendesk_apps_support/validations/secrets.rb
266
281
  - lib/zendesk_apps_support/validations/source.rb