arkaan 1.3.3 → 1.3.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
  SHA1:
3
- metadata.gz: 1421f9b29b1a34819afe826ac72a4599644381c1
4
- data.tar.gz: 5835dde200cc11c279637ab10fd2db1fc1f21ff4
3
+ metadata.gz: 19efb40b34e772295e2e3d88d2d420c5f89259df
4
+ data.tar.gz: fb73957a53d5ba35423d94c889bb0357272a262a
5
5
  SHA512:
6
- metadata.gz: ef6a293b1b11a01c0abcb834de89bc1e4723b87885099ccf6e427d175fa1e894abd7366c72989d6cd350c9a49571cb8ea918a95877123fb0d4b3cbd774f91d81
7
- data.tar.gz: 3e793f2fc1170ff3fbc0be21505a11f4a4a5ed4c9647ee59326dc5c998a741eebb8c44c9cf5ffb69165f71407d509eecbd22b913406973b5ee44fb5a524673b4
6
+ metadata.gz: 9d3d4e798060c3bba039c5a670332cb66063955e10b7caa4d5811584bbc2cf02bde8c618826a17f7f4bed8aeb90c7ba621fea6c691ebeb319b7912c8122f0914
7
+ data.tar.gz: 1243cec2b101cc1dbe77503e2b353de557875e1c74b99b60b39bf269be7c89bc0c817a6841928436b4b47a8c48851767548ca0c2af430ce30d54ce5785e348eb
@@ -5,6 +5,7 @@ module Arkaan
5
5
  class File
6
6
  include Mongoid::Document
7
7
  include Mongoid::Timestamps
8
+ include Arkaan::Concerns::MimeTypable
8
9
 
9
10
  # @!attribute [rw] filename
10
11
  # @return [String] the name of the file, corresponding to the AWS name.
@@ -12,16 +13,12 @@ module Arkaan
12
13
  # @!attribute [rw] size
13
14
  # @return [Integer] the size of the file in bytes.
14
15
  field :size, type: Integer, default: 0
15
- # @!attribute [rw] mime_type
16
- # @return [String] the MIME type of the file, obtained from the uploaded file.
17
- field :mime_type, type: String
18
16
 
19
17
  # @!attribute [rw] invitation
20
18
  # @return [Arkaan::Campaigns::Invitation] the link to the user creator of the file and the campaign it's created in.
21
19
  embedded_in :invitation, class_name: 'Arkaan::Campaigns::Invitation', inverse_of: :files
22
20
 
23
- validates 'name' , presence: {message: 'required'}
24
- validates 'mime_type', presence: {message: 'required'}
21
+ validates :name , presence: {message: 'required'}
25
22
  end
26
23
  end
27
24
  end
@@ -5,6 +5,7 @@ module Arkaan
5
5
  autoload :Activable , 'arkaan/concerns/activable'
6
6
  autoload :Diagnosticable, 'arkaan/concerns/diagnosticable'
7
7
  autoload :Enumerable , 'arkaan/concerns/enumerable'
8
+ autoload :MimeTypable , 'arkaan/concerns/mime_typable'
8
9
  autoload :Premiumable , 'arkaan/concerns/premiumable'
9
10
  autoload :Sluggable , 'arkaan/concerns/sluggable'
10
11
  autoload :Typable , 'arkaan/concerns/typable'
@@ -0,0 +1,32 @@
1
+ module Arkaan
2
+ module Concerns
3
+ # Includes the MIME type field to files to ensure only supported types are included.
4
+ # @author Vincent Courtois <courtois.vincent@outlook.com>
5
+ module MimeTypable
6
+ extend ActiveSupport::Concern
7
+
8
+ # Module holding the class methods for the classes including this concern.
9
+ # @author Vincent Courtois <courtois.vincent@outlook.com>
10
+ included do
11
+ # @!attribute [rw] mime_type
12
+ # @return [String] the MIME type of the file, obtained from the uploaded file.
13
+ field :mime_type, type: String
14
+
15
+ validates :mime_type, presence: {message: 'required'}
16
+
17
+ validate :mime_type_validity, if: :mime_type?
18
+
19
+ # Validates the validity of the MIME type by checking if it respects any of the given mime types.
20
+ # If it does not respect any MIME types possible, it adds an error to the mime_type field and invalidates.
21
+ def mime_type_validity
22
+ accepted = ['image/*', 'text/plain']
23
+ accepted.each do |type|
24
+ type_regex = ::Regexp.new("^#{type.sub(/\*/, '(.+)')}$")
25
+ return true if !type_regex.match(mime_type).nil?
26
+ end
27
+ errors.add(:mime_type, 'pattern')
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arkaan
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Courtois
@@ -268,6 +268,7 @@ files:
268
268
  - lib/arkaan/concerns/activable.rb
269
269
  - lib/arkaan/concerns/diagnosticable.rb
270
270
  - lib/arkaan/concerns/enumerable.rb
271
+ - lib/arkaan/concerns/mime_typable.rb
271
272
  - lib/arkaan/concerns/premiumable.rb
272
273
  - lib/arkaan/concerns/sluggable.rb
273
274
  - lib/arkaan/concerns/typable.rb