zendesk_apps_support 4.16.0 → 4.17.0

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: 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