froala-editor-sdk 1.2.0 → 4.0.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
- SHA1:
3
- metadata.gz: c51a689daf99ec97c6ccebbb452f66e3c0c217b8
4
- data.tar.gz: 4dc43249a447e483c3463103d4e8cebd755ff4a5
2
+ SHA256:
3
+ metadata.gz: b9a480de43d7ab38e6c584f2619b9c616b3256885ce624b879efcee7f926ecd2
4
+ data.tar.gz: 4edd6556ad1a0049b1b7a8fda4ffc61293d76a5612f5ba70f7a95166d87ca59b
5
5
  SHA512:
6
- metadata.gz: 642103cf3c5b322c4e7d9664c9619ef86503b720b9a1f3827a1bc94544862fce3cabd16cff1ca53045fe6145e3b60d3b0326337b109b10194daa8d7fba1c3e29
7
- data.tar.gz: 5b429455276179d3a3dc96ef5f0158ce9b5ebc70afb606a8a47546f304f74f960b9c3f25819f55b8ed3d9cda5d4fdb1bd5f951bbcfb8ce71094d6ed852513b7e
6
+ metadata.gz: 6af3df5f2c0bedf6a15bdf8c5bb060e1032f535c74abfc99fdf5d98cff73522d4c66c1520796ebb5d822a6b8f99e37ba366e572c0f5ce681f6ae0199985e3352
7
+ data.tar.gz: a7645f764dcfc0b14679e32b8470e165b1e53616f37edb779de8c9725461f69b155b7d5d6c6e961dfd4ada294fe641ee6797966fec5e8f4adc2b3e3332aa2cd4
@@ -1,11 +1,11 @@
1
- require 'mime-types'
2
- require 'mini_magick'
3
- require 'froala-editor-sdk/utils/validation'
4
- require 'froala-editor-sdk/utils/utils'
5
-
6
-
7
- require 'froala-editor-sdk/file'
8
- require 'froala-editor-sdk/image'
9
- require 'froala-editor-sdk/s3'
10
- require 'froala-editor-sdk/version'
11
- require 'froala-editor-sdk/video'
1
+ require 'mime-types'
2
+ require 'mini_magick'
3
+ require 'froala-editor-sdk/utils/validation'
4
+ require 'froala-editor-sdk/utils/utils'
5
+
6
+
7
+ require 'froala-editor-sdk/file'
8
+ require 'froala-editor-sdk/image'
9
+ require 'froala-editor-sdk/s3'
10
+ require 'froala-editor-sdk/version'
11
+ require 'froala-editor-sdk/video'
@@ -1,109 +1,114 @@
1
- module FroalaEditorSDK
2
-
3
- require 'fileutils'
4
-
5
- # File functionality.
6
- class File
7
-
8
- # Default options that are used if no options are passed to the upload function
9
- @default_options = {
10
- fieldname: 'file',
11
- validation: {
12
- allowedExts: [".txt", ".pdf", ".doc", ".json", ".html"],
13
- allowedMimeTypes: [ "text/plain", "application/msword", "application/x-pdf", "application/pdf", "application/json","text/html" ]
14
- },
15
- resize: nil
16
- }
17
-
18
- # Default upload path.
19
- @default_upload_path = "public/uploads/files"
20
-
21
- # Uploads a file to the server.
22
- # Params:
23
- # +params+:: File upload parameter mostly is "file".
24
- # +upload_path+:: Server upload path, a storage path where the file will be stored.
25
- # +options+:: Hash object that contains configuration parameters for uploading a file.
26
- # Returns json object
27
- def self.upload(params, upload_path = @default_upload_path, options = {})
28
-
29
- # Merge options.
30
- options = @default_options.merge(options)
31
-
32
- file = params[options[:fieldname]]
33
-
34
- if file
35
-
36
- # Validates the file extension and mime type.
37
- validation = Validation.check(file, options)
38
-
39
- # Uses the Utlis name function to generate a random name for the file.
40
- file_name = Utils.name(file)
41
- path = Rails.root.join(upload_path, file_name)
42
-
43
- # Saves the file on the server and returns the path.
44
- serve_url = save(file, path)
45
-
46
- resize(options, path) if !options[:resize].nil?
47
-
48
- return {:link => serve_url}.to_json
49
- else
50
- return nil
51
- end
52
- end
53
-
54
- # Saves a file on the server.
55
- # Params:
56
- # +file+:: The uploaded file that will be saved on the server.
57
- # +path+:: The path where the file will be saved.
58
- def self.save (file, path)
59
-
60
- # Create directory if it doesn't exist.
61
- dirname = ::File.dirname(path)
62
- unless ::File.directory?(dirname)
63
- ::FileUtils.mkdir_p(dirname)
64
- end
65
-
66
- if ::File.open(path, "wb") {|f| f.write(file.read)}
67
-
68
- # Returns a public accessible server path.
69
- return "#{"/uploads/"}#{Utils.get_file_name(path)}"
70
- else
71
- return "error"
72
- end
73
- end
74
-
75
- # Deletes a file found on the server.
76
- # Params:
77
- # +file+:: The file that will be deleted from the server.
78
- # +path+:: The server path where the file resides.
79
- # Returns true or false.
80
- def self.delete(file = params[:file], path)
81
-
82
- file_path = Rails.root.join(path, ::File.basename(file))
83
- if ::File.delete(file_path)
84
- return true
85
- else
86
- return false
87
- end
88
- end
89
-
90
- # Resizes an image based on the options provided.
91
- # The function resizes the original file,
92
- # Params:
93
- # +options+:: The options that contain the resize hash
94
- # +path+:: The path where the image is stored
95
- def self.resize (options, path)
96
- image = MiniMagick::Image.new(path)
97
- image.path
98
- image.resize("#{options[:resize][:height]}x#{options[:resize][:width]}")
99
- end
100
-
101
- class << self
102
- attr_reader :var
103
- end
104
-
105
- def var
106
- self.class.var
107
- end
108
- end
1
+ module FroalaEditorSDK
2
+
3
+ require 'fileutils'
4
+
5
+ # File functionality.
6
+ class File
7
+
8
+ # Default options that are used if no options are passed to the upload function
9
+ @default_options = {
10
+ fieldname: 'file',
11
+ validation: {
12
+ allowedExts: [".txt", ".pdf", ".doc", ".json", ".html"],
13
+ allowedMimeTypes: [ "text/plain", "application/msword", "application/x-pdf", "application/pdf", "application/json","text/html" ]
14
+ },
15
+ resize: nil,
16
+ file_access_path: '/uploads/'
17
+ }
18
+
19
+ # Default upload path.
20
+ @default_upload_path = "public/uploads/files"
21
+
22
+ # Uploads a file to the server.
23
+ # Params:
24
+ # +params+:: File upload parameter mostly is "file".
25
+ # +upload_path+:: Server upload path, a storage path where the file will be stored.
26
+ # +options+:: Hash object that contains configuration parameters for uploading a file.
27
+ # Returns json object
28
+ def self.upload(params, upload_path = @default_upload_path, options = {})
29
+
30
+ # Merge options.
31
+ options = @default_options.merge(options)
32
+
33
+ file = params[options[:fieldname]]
34
+
35
+ if file
36
+
37
+ # Validates the file extension and mime type.
38
+ validation = Validation.check(file, options)
39
+
40
+ # Uses the Utlis name function to generate a random name for the file.
41
+ file_name = Utils.name(file)
42
+ path = Rails.root.join(upload_path, file_name)
43
+
44
+ # Saves the file on the server and returns the path.
45
+ serve_url = save(file, path, options[:file_access_path])
46
+
47
+ resize(options, path) if !options[:resize].nil?
48
+
49
+ return {:link => serve_url}.to_json
50
+ else
51
+ return nil
52
+ end
53
+ end
54
+
55
+ # Saves a file on the server.
56
+ # Params:
57
+ # +file+:: The uploaded file that will be saved on the server.
58
+ # +path+:: The path where the file will be saved.
59
+ def self.save (file, path, file_access_path)
60
+
61
+ # Create directory if it doesn't exist.
62
+ dirname = ::File.dirname(path)
63
+ unless ::File.directory?(dirname)
64
+ ::FileUtils.mkdir_p(dirname)
65
+ end
66
+
67
+ if ::File.open(path, "wb") {|f| f.write(file.read)}
68
+
69
+ # Returns a public accessible server path.
70
+ return "#{file_access_path}#{Utils.get_file_name(path)}"
71
+ else
72
+ return "error"
73
+ end
74
+ end
75
+
76
+ # Deletes a file found on the server.
77
+ # Params:
78
+ # +file+:: The file that will be deleted from the server.
79
+ # +path+:: The server path where the file resides.
80
+ # Returns true or false.
81
+ def self.delete(file = params[:file], path)
82
+
83
+ file_path = Rails.root.join(path, ::File.basename(file))
84
+ begin
85
+ if ::File.delete(file_path)
86
+ return true
87
+ else
88
+ return false
89
+ end
90
+ rescue => exception
91
+ return false
92
+ end
93
+ end
94
+
95
+ # Resizes an image based on the options provided.
96
+ # The function resizes the original file,
97
+ # Params:
98
+ # +options+:: The options that contain the resize hash
99
+ # +path+:: The path where the image is stored
100
+ def self.resize (options, path)
101
+ image = MiniMagick::Image.new(path)
102
+ image.path
103
+ image.resize("#{options[:resize][:width]}x#{options[:resize][:height]}")
104
+ end
105
+
106
+ class << self
107
+ attr_reader :var
108
+ end
109
+
110
+ def var
111
+ self.class.var
112
+ end
113
+ end
109
114
  end
@@ -1,34 +1,38 @@
1
- module FroalaEditorSDK
2
- # Image functionality.
3
- class Image < File
4
-
5
- # Default options that are used if no options are passed to the upload function.
6
- @default_options = {
7
- fieldname: 'file',
8
- validation: {
9
- allowedExts: [".gif", ".jpeg", ".jpg", ".png", ".svg", ".blob"],
10
- allowedMimeTypes: [ "image/gif", "image/jpeg", "image/pjpeg", "image/x-png", "image/png", "image/svg+xml" ]
11
- },
12
- resize: nil
13
- }
14
-
15
- # Default upload path.
16
- @default_upload_path = "public/uploads/images"
17
-
18
- # Loads the images from a specific path
19
- # Params:
20
- # +path+:: The server path where the images are saved
21
- # Returns Json object
22
- def self.load_images(path)
23
-
24
- images = Dir["#{path}*"]
25
- all_images = []
26
-
27
- images.each do |img|
28
- all_images.push({url: "#{"/uploads/"}#{Utils.get_file_name(img)}"})
29
- end
30
-
31
- return all_images.to_json
32
- end
33
- end
1
+ module FroalaEditorSDK
2
+ # Image functionality.
3
+ class Image < File
4
+
5
+ # Default options that are used if no options are passed to the upload function.
6
+ @default_options = {
7
+ fieldname: 'file',
8
+ validation: {
9
+ allowedExts: [".gif", ".jpeg", ".jpg", ".png", ".svg", ".blob"],
10
+ allowedMimeTypes: [ "image/gif", "image/jpeg", "image/pjpeg", "image/x-png", "image/png", "image/svg+xml" ]
11
+ },
12
+ resize: nil,
13
+ file_access_path: '/uploads/'
14
+ }
15
+
16
+ # Default upload path.
17
+ @default_upload_path = "public/uploads/images"
18
+
19
+ # Loads the images from a specific path
20
+ # Params:
21
+ # +path+:: The server path where the images are saved
22
+ # Returns Json object
23
+ def self.load_images(path, options = {})
24
+
25
+ # Merge options.
26
+ options = @default_options.merge(options)
27
+
28
+ images = Dir["#{path}*"]
29
+ all_images = []
30
+
31
+ images.each do |img|
32
+ all_images.push({url: "#{options[:file_access_path]}#{Utils.get_file_name(img)}"})
33
+ end
34
+
35
+ return all_images.to_json
36
+ end
37
+ end
34
38
  end
@@ -1,61 +1,96 @@
1
- module FroalaEditorSDK
2
-
3
- # Uploads files to S3/AWS
4
- class S3
5
-
6
- # Builds a signature based on the options.
7
- # Params:
8
- # +options+:: The configuration params that are needed to compute the signature.
9
- def self.signature (options = nil)
10
- Base64.encode64(
11
- OpenSSL::HMAC.digest(
12
- OpenSSL::Digest.new('sha1'),
13
- options[:secretKey], self.policy(options)
14
- )
15
- ).gsub("\n", "")
16
- end
17
-
18
- # Encodes to Base64 the policy data and replaces new lines chars.
19
- # Params:
20
- # +options+:: The configuration params that are needed to compute the signature.
21
- def self.policy (options = nil)
22
- Base64.encode64(self.policy_data(options).to_json).gsub("\n", "")
23
- end
24
-
25
- # Sets policy params, bucket that will be used max file size and other params.
26
- # Params:
27
- # +options+:: Configuration params that are needed to set the policy
28
- def self.policy_data (options = nil)
29
- {
30
- expiration: 10.hours.from_now.utc.iso8601,
31
- conditions: [
32
- ["starts-with", "$key", options[:keyStart]], # Start key/folder
33
- ["starts-with", "$x-requested-with", "xhr"], # Request type
34
- ["starts-with", "$content-type", ""], # Content type
35
- {bucket: options[:bucket]}, # Bucket name
36
- {acl: options[:acl]}, # ACL property
37
- {success_action_status: "201"} # Response status 201 'file created'
38
- ]
39
- }
40
- end
41
-
42
- # Makes all the request in order and returns AWS hash response
43
- # Params:
44
- # +options+:: Configuration params to generate the AWS response.
45
- def self.data_hash (options = nil)
46
- options[:region] = 'us-east-1' if options[:region].nil? || options[:region] == 's3'
47
-
48
- {
49
- :bucket => options[:bucket], # Upload bucket
50
- :region => options[:region] != 'us-east-1' ? "s3-#{options[:region]}" : 's3', # Upload region
51
- :keyStart => options[:keyStart], # Start key/folder
52
- :params => {
53
- :signature => self.signature(options), # Defined signature
54
- :AWSAccessKeyId => options[:accessKey], # Your Access key
55
- :policy => self.policy(options), # Defined policy
56
- :acl => options[:acl] # ACL property 'public-read'
57
- }
58
- }
59
- end
60
- end
1
+ module FroalaEditorSDK
2
+
3
+ # Uploads files to S3/AWS
4
+ class S3
5
+
6
+ # Builds a signature based on the options.
7
+ # Params:
8
+ # +options+:: The configuration params that are needed to compute the signature.
9
+ def self.signature (options = nil)
10
+ OpenSSL::HMAC.hexdigest(
11
+ "SHA256",
12
+ self.sign(
13
+ self.sign(
14
+ self.sign(
15
+ self.sign(
16
+ ("AWS4" + options[:secretKey]).force_encoding(Encoding::UTF_8),
17
+ options[:'date-string']
18
+ ),
19
+ options[:region]
20
+ ),
21
+ "s3"
22
+ ),
23
+ "aws4_request"
24
+ ),
25
+ self.policy(options)
26
+ )
27
+ end
28
+
29
+ # Builds a HMAC-SHA256 digest using key and data
30
+ # Params:
31
+ # +key+:: Key to use for creating the digest
32
+ # +data+:: Data to be used for creating the digest
33
+ def self.sign(key, data)
34
+ OpenSSL::HMAC.digest(OpenSSL::Digest::SHA256.new, key, data.force_encoding(Encoding::UTF_8))
35
+ end
36
+
37
+ # Encodes to Base64 the policy data and replaces new lines chars.
38
+ # Params:
39
+ # +options+:: The configuration params that are needed to compute the signature.
40
+ def self.policy (options = nil)
41
+ Base64.encode64(self.policy_data(options).to_json).gsub("\n", "")
42
+ end
43
+
44
+ # Sets policy params, bucket that will be used max file size and other params.
45
+ # Params:
46
+ # +options+:: Configuration params that are needed to set the policy
47
+ def self.policy_data (options = nil)
48
+ {
49
+ expiration: 10.hours.from_now.utc.iso8601,
50
+ conditions: [
51
+ ["starts-with", "$key", options[:keyStart]], # Start key/folder
52
+ ["starts-with", "$Content-type", ""], # Content type
53
+ {"x-requested-with": "xhr"}, # Request type
54
+ {"x-amz-algorithm": options[:'x-amz-algorithm']}, # Encrytion Algorithm
55
+ {"x-amz-date": options[:'x-amz-date']}, # Current Date
56
+ {"x-amz-credential": options[:'x-amz-credential']}, # Encrypted Credentials
57
+ {bucket: options[:bucket]}, # Bucket name
58
+ {acl: options[:acl]}, # ACL property
59
+ {success_action_status: "201"} # Response status 201 'file created'
60
+ ]
61
+ }
62
+ end
63
+
64
+ # Builds the amazon credential by appending access key, x-amz-date, region and 's3/aws4_request'
65
+ # Params:
66
+ # +options+:: Configuration params to generate the AWS response
67
+ def self.getXamzCredential(options = nil)
68
+ "#{options[:accessKey]}#{"/"}#{options[:'date-string']}#{"/"}#{options[:region]}#{"/"}#{"s3/aws4_request"}"
69
+ end
70
+
71
+ # Makes all the request in order and returns AWS hash response
72
+ # Params:
73
+ # +options+:: Configuration params to generate the AWS response.
74
+ def self.data_hash (options = nil)
75
+ options[:region] = 'us-east-1' if options[:region].nil? || options[:region] == 's3'
76
+ options[:'date-string'] = Time.now.strftime("%Y%m%d")
77
+ options[:'x-amz-algorithm'] = "AWS4-HMAC-SHA256"
78
+ options[:'x-amz-credential'] = self.getXamzCredential(options)
79
+ options[:'x-amz-date'] = options[:'date-string'] + "T000000Z"
80
+
81
+ {
82
+ :bucket => options[:bucket], # Upload bucket
83
+ :region => options[:region] != 'us-east-1' ? "s3-#{options[:region]}" : 's3', # Upload region
84
+ :keyStart => options[:keyStart], # Start key/folder
85
+ :params => {
86
+ :acl => options[:acl], # ACL property 'public-read'
87
+ :policy => self.policy(options), # Defined policy
88
+ :'x-amz-algorithm' => options[:'x-amz-algorithm'], # Encrytion Algorithm
89
+ :'x-amz-credential' => options[:'x-amz-credential'], # Encrypted Credentials
90
+ :'x-amz-date' => options[:'x-amz-date'], # Current Date
91
+ :'x-amz-signature' => self.signature(options), # Defined signature
92
+ }
93
+ }
94
+ end
95
+ end
61
96
  end
@@ -1,19 +1,19 @@
1
- module FroalaEditorSDK
2
-
3
- # Basic utility functionality.
4
- class Utils
5
-
6
- # Generates a random name that will be used as name for files.
7
- def self.name (file)
8
- name = SecureRandom.urlsafe_base64
9
- ext = ::File.extname(file.original_filename)
10
-
11
- return "#{name}#{ext}"
12
- end
13
-
14
- # Returns file name from an file path
15
- def self.get_file_name(path)
16
- return ::File.basename(path)
17
- end
18
- end
1
+ module FroalaEditorSDK
2
+
3
+ # Basic utility functionality.
4
+ class Utils
5
+
6
+ # Generates a random name that will be used as name for files.
7
+ def self.name (file)
8
+ name = SecureRandom.urlsafe_base64
9
+ ext = ::File.extname(file.original_filename)
10
+
11
+ return "#{name}#{ext}"
12
+ end
13
+
14
+ # Returns file name from an file path
15
+ def self.get_file_name(path)
16
+ return ::File.basename(path)
17
+ end
18
+ end
19
19
  end
@@ -1,35 +1,35 @@
1
- module FroalaEditorSDK
2
-
3
- # Image Validation class.
4
- # Checks if image is matching the allowed extensions and mime types.
5
- class Validation
6
- require "mime-types"
7
-
8
- def self.ext(ext, options)
9
- raise "Not allowed" unless options[:validation][:allowedExts].include?(ext)
10
- end
11
-
12
- def self.mime(mime, options)
13
- raise "Invalid mime type" unless options[:validation][:allowedMimeTypes].include?(mime)
14
- end
15
-
16
- # Checks an image with the options.
17
- # Params:
18
- # +file+:: The image that will be validated.
19
- # +options+:: The image options that contain allowed extensions and mime types.
20
- # Raises exception if the image has not passed the validation
21
- def self.check(file, options = nil)
22
-
23
- mime = file.content_type
24
- ext = ::File.extname(file.original_filename)
25
-
26
- # Check if there is custom validation.
27
- if options[:validation].class != Proc
28
- ext(ext, options) && mime(mime, options)
29
- else
30
- options[:validation].call(file.path, mime)
31
- end
32
- end
33
-
34
- end
1
+ module FroalaEditorSDK
2
+
3
+ # Image Validation class.
4
+ # Checks if image is matching the allowed extensions and mime types.
5
+ class Validation
6
+ require "mime-types"
7
+
8
+ def self.ext(ext, options)
9
+ raise "Not allowed" unless options[:validation][:allowedExts].include?(ext)
10
+ end
11
+
12
+ def self.mime(mime, options)
13
+ raise "Invalid mime type" unless options[:validation][:allowedMimeTypes].include?(mime)
14
+ end
15
+
16
+ # Checks an image with the options.
17
+ # Params:
18
+ # +file+:: The image that will be validated.
19
+ # +options+:: The image options that contain allowed extensions and mime types.
20
+ # Raises exception if the image has not passed the validation
21
+ def self.check(file, options = nil)
22
+
23
+ mime = file.content_type
24
+ ext = ::File.extname(file.original_filename)
25
+
26
+ # Check if there is custom validation.
27
+ if options[:validation].class != Proc
28
+ ext(ext, options) && mime(mime, options)
29
+ else
30
+ options[:validation].call(file.path, mime)
31
+ end
32
+ end
33
+
34
+ end
35
35
  end
@@ -1,9 +1,9 @@
1
- module FroalaEditorSDK
2
- module Version
3
- Major = 1
4
- Minor = 2
5
- Tiny = 0
6
-
7
- String = "#{Major}.#{Minor}.#{Tiny}"
8
- end
1
+ module FroalaEditorSDK
2
+ module Version
3
+ Major = 4
4
+ Minor = 0
5
+ Tiny = 0
6
+
7
+ String = "#{Major}.#{Minor}.#{Tiny}"
8
+ end
9
9
  end
@@ -1,19 +1,20 @@
1
- module FroalaEditorSDK
2
-
3
- # Video functionality.
4
- class Video < File
5
-
6
- # Default options that are used if no options are passed to the upload function
7
- @default_options = {
8
- fieldname: 'file',
9
- validation: {
10
- allowedExts: [".mp4", ".webm", ".ogg"],
11
- allowedMimeTypes: [ "video/mp4", "video/webm", "video/ogg" ]
12
- },
13
- resize: nil
14
- }
15
-
16
- # Default upload path.
17
- @default_upload_path = "public/uploads/videos"
18
- end
1
+ module FroalaEditorSDK
2
+
3
+ # Video functionality.
4
+ class Video < File
5
+
6
+ # Default options that are used if no options are passed to the upload function
7
+ @default_options = {
8
+ fieldname: 'file',
9
+ validation: {
10
+ allowedExts: [".mp4", ".webm", ".ogg"],
11
+ allowedMimeTypes: [ "video/mp4", "video/webm", "video/ogg" ]
12
+ },
13
+ resize: nil,
14
+ file_access_path: '/uploads/'
15
+ }
16
+
17
+ # Default upload path.
18
+ @default_upload_path = "public/uploads/videos"
19
+ end
19
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: froala-editor-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Froala Labs
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-14 00:00:00.000000000 Z
11
+ date: 2021-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types
@@ -30,30 +30,30 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.6.0
33
+ version: 4.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.6.0
40
+ version: 4.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mini_magick
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 4.5.0
47
+ version: '4.5'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 4.5.0
54
+ version: '4.5'
55
55
  description: Ruby SDK for Froala Editor
56
- email:
56
+ email:
57
57
  executables: []
58
58
  extensions: []
59
59
  extra_rdoc_files: []
@@ -70,7 +70,7 @@ homepage: https://github.com/froala/wysiwyg-editor-ruby-sdk
70
70
  licenses:
71
71
  - MIT
72
72
  metadata: {}
73
- post_install_message:
73
+ post_install_message:
74
74
  rdoc_options: []
75
75
  require_paths:
76
76
  - lib
@@ -85,9 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  requirements: []
88
- rubyforge_project:
89
- rubygems_version: 2.6.10
90
- signing_key:
88
+ rubygems_version: 3.0.3.1
89
+ signing_key:
91
90
  specification_version: 4
92
91
  summary: Ruby on Rails SDK for Froala WYSIWYG Editor.
93
92
  test_files: []