imagekitio 1.0.10 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +292 -82
  3. data/Rakefile +1 -1
  4. data/lib/active_storage/active_storage.rb +2 -0
  5. data/lib/active_storage/service/ik_file.rb +111 -0
  6. data/lib/active_storage/service/image_kit_io_service.rb +185 -0
  7. data/lib/carrierwave/carrierwave.rb +79 -0
  8. data/lib/carrierwave/storage/ik_file.rb +8 -7
  9. data/lib/carrierwave/storage/imagekit_store.rb +54 -51
  10. data/lib/carrierwave/support/uri_filename.rb +9 -7
  11. data/lib/imagekitio/api_service/bulk.rb +58 -0
  12. data/lib/imagekitio/api_service/custom_metadata_field.rb +52 -0
  13. data/lib/imagekitio/api_service/file.rb +162 -0
  14. data/lib/imagekitio/api_service/folder.rb +49 -0
  15. data/lib/imagekitio/base.rb +12 -0
  16. data/lib/imagekitio/client.rb +186 -0
  17. data/lib/imagekitio/configurable.rb +43 -0
  18. data/lib/imagekitio/constant.rb +36 -0
  19. data/lib/imagekitio/constants/default.rb +22 -0
  20. data/lib/imagekitio/constants/error.rb +69 -0
  21. data/lib/imagekitio/constants/file.rb +11 -0
  22. data/lib/imagekitio/constants/supported_transformation.rb +64 -0
  23. data/lib/imagekitio/constants/url.rb +14 -0
  24. data/lib/imagekitio/errors.rb +4 -0
  25. data/lib/imagekitio/railtie.rb +1 -1
  26. data/lib/imagekitio/request.rb +79 -0
  27. data/lib/imagekitio/sdk/version.rb +5 -0
  28. data/lib/imagekitio/url.rb +241 -0
  29. data/lib/imagekitio/utils/calculation.rb +44 -0
  30. data/lib/imagekitio/utils/formatter.rb +48 -0
  31. data/lib/imagekitio/utils/option_validator.rb +36 -0
  32. data/lib/imagekitio.rb +10 -83
  33. metadata +41 -15
  34. data/lib/imagekit/constants/defaults.rb +0 -20
  35. data/lib/imagekit/constants/errors.rb +0 -77
  36. data/lib/imagekit/constants/file.rb +0 -5
  37. data/lib/imagekit/constants/supported_transformation.rb +0 -57
  38. data/lib/imagekit/constants/url.rb +0 -9
  39. data/lib/imagekit/file.rb +0 -133
  40. data/lib/imagekit/imagekit.rb +0 -117
  41. data/lib/imagekit/resource.rb +0 -56
  42. data/lib/imagekit/sdk/version.rb +0 -5
  43. data/lib/imagekit/url.rb +0 -237
  44. data/lib/imagekit/utils/calculation.rb +0 -36
  45. data/lib/imagekit/utils/formatter.rb +0 -29
@@ -1,4 +1,4 @@
1
- module Imagekitio
1
+ module ImageKitIo
2
2
  class Railtie < ::Rails::Railtie
3
3
  end
4
4
  end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "base64"
4
+ require "rest-client"
5
+ require "json"
6
+ require_relative './constant'
7
+ # Request requests and sends data from server
8
+ module ImageKitIo
9
+ class Request
10
+ include Constantable
11
+
12
+ attr_reader :private_key, :public_key, :url_endpoint, :transformation_position, :options
13
+
14
+ def initialize(private_key, public_key, url_endpoint, transformation_position = nil, options = nil)
15
+ @private_key = private_key
16
+ @public_key = public_key
17
+ @url_endpoint = url_endpoint
18
+ @transformation_position = transformation_position || constants.TRANSFORMATION_POSITION
19
+ @options = options || {}
20
+ end
21
+
22
+ # creates required headers
23
+ def create_headers
24
+ headers = {'Accept-Encoding': "application/json", 'Content-Type': "application/json"}
25
+ headers.update(auth_headers)
26
+ end
27
+
28
+ def auth_headers
29
+ encoded_private_key = Base64.strict_encode64(@private_key+":")
30
+ {Authorization: "Basic #{encoded_private_key}"}
31
+ end
32
+
33
+ # request method communicates with server
34
+ def request(method, url, headers = create_headers, payload = nil)
35
+ headers ||= create_headers
36
+ response = {response: nil, error: nil}
37
+ begin
38
+ resp = RestClient::Request.new(method: method,
39
+ url: url,
40
+ headers: headers,
41
+ payload: payload).execute
42
+
43
+ if (resp.code >= 200) && (resp.code < 204)
44
+ if (resp.headers[:content_type].include? "application/json")
45
+ response[:response] = JSON.parse(resp.body.to_s)
46
+ else
47
+ raise =RestClient::ExceptionWithResponse
48
+ end
49
+ elsif resp.code == 204
50
+ response[:response] = {'success': true}
51
+ end
52
+
53
+ rescue RestClient::ExceptionWithResponse => err
54
+ response[:error] = if err.http_code == 404
55
+ {'message': err.response.to_s}
56
+ else
57
+ JSON.parse(err.response)
58
+ end
59
+ end
60
+ response
61
+ end
62
+
63
+ def request_stream(method, url, headers: nil, payload: nil, **options, &block)
64
+ headers ||= create_headers
65
+ response = { response: nil, error: nil }
66
+ begin
67
+ RestClient::Request.execute(method: method,
68
+ url: url,
69
+ headers: headers,
70
+ payload: payload,
71
+ **options,
72
+ block_response: block
73
+ )
74
+ rescue RestClient::ExceptionWithResponse => err
75
+ err.http_code == 404 ? response[:error] = {'message': err.response.to_s} : JSON.parse(err.response)
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,5 @@
1
+ module ImageKitIo
2
+ module Sdk
3
+ VERSION = '2.0.0'
4
+ end
5
+ end
@@ -0,0 +1,241 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Url holds url generation method
4
+
5
+ require "cgi"
6
+ require "addressable/uri"
7
+ require "openssl"
8
+ require_relative "./utils/formatter"
9
+ require_relative "sdk/version.rb"
10
+
11
+ module ImageKitIo
12
+ class Url
13
+ include Constantable
14
+
15
+ def initialize(request_obj)
16
+ @req_obj = request_obj
17
+ end
18
+
19
+ def generate_url(options)
20
+ if options.key? :src
21
+ options[:transformation_position] = constants.TRANSFORMATION_POSITION
22
+ end
23
+ extended_options = extend_url_options(options)
24
+ build_url(extended_options)
25
+ end
26
+
27
+ def build_url(options)
28
+ # build url from all options
29
+
30
+ path = options.fetch(:path, "")
31
+ src = options.fetch(:src, "")
32
+ url_endpoint = options.fetch(:url_endpoint, "")
33
+ transformation_position = options[:transformation_position]
34
+
35
+ unless constants.VALID_TRANSFORMATION_POSITION.include? transformation_position
36
+ raise ArgumentError, constants.INVALID_TRANSFORMATION_POS
37
+ end
38
+
39
+ src_param_used_for_url = false
40
+ if (src != "") || (transformation_position == constants.QUERY_TRANSFORMATION_POSITION)
41
+ src_param_used_for_url = true
42
+ end
43
+
44
+ if path == "" && src == ""
45
+ return ""
46
+ end
47
+
48
+ result_url_hash = {'host': "", 'path': "", 'query': ""}
49
+ existing_query=nil
50
+ if path != ""
51
+ parsed_url = Addressable::URI.parse(path)
52
+ existing_query=parsed_url.query
53
+ parsed_host = Addressable::URI.parse(url_endpoint)
54
+ result_url_hash[:scheme] = parsed_host.scheme
55
+
56
+ # making sure single '/' at end
57
+ result_url_hash[:host] = parsed_host.host.to_s.chomp("/") + parsed_host.path.chomp("/") + "/"
58
+ result_url_hash[:path] = trim_slash(parsed_url.path)
59
+ else
60
+ parsed_url = Addressable::URI.parse(src)
61
+ existing_query=parsed_url.query
62
+ host = parsed_url.host
63
+ result_url_hash[:userinfo] = parsed_url.userinfo if parsed_url.userinfo
64
+ result_url_hash[:host] = host
65
+ result_url_hash[:scheme] = parsed_url.scheme
66
+ result_url_hash[:path] = parsed_url.path
67
+ src_param_used_for_url = true
68
+ end
69
+ query_params = {}
70
+ if existing_query!=nil
71
+ existing_query.split("&").each do |part|
72
+ parts=part.split("=")
73
+ if parts.length==2
74
+ query_params[parts[0]]=parts[1]
75
+ end
76
+ end
77
+ end
78
+ options.fetch(:query_parameters, {}).each do |key, value|
79
+ query_params[key]=value
80
+ end
81
+ transformation_str = transformation_to_str(options[:transformation]).chomp("/")
82
+
83
+ unless transformation_str.nil? || transformation_str.strip.empty?
84
+ if (transformation_position == constants.QUERY_TRANSFORMATION_POSITION) || src_param_used_for_url == true
85
+ result_url_hash[:query] = "#{constants.TRANSFORMATION_PARAMETER}=#{transformation_str}"
86
+ query_params[:tr]=transformation_str
87
+ else
88
+ result_url_hash[:path] = "#{constants.TRANSFORMATION_PARAMETER}:#{transformation_str}/#{result_url_hash[:path]}"
89
+ end
90
+
91
+ end
92
+
93
+ result_url_hash[:host] = result_url_hash[:host].to_s.reverse.chomp("/").reverse
94
+ result_url_hash[:path] = result_url_hash[:path].chomp("/")
95
+ result_url_hash[:scheme] ||= "https"
96
+
97
+ query_param_arr = []
98
+ query_param_arr.push("ik-sdk-version=ruby-"+ImageKitIo::Sdk::VERSION)
99
+ query_params.each do |key, value|
100
+ if value.to_s == ""
101
+ query_param_arr.push(key.to_s)
102
+ else
103
+ query_param_arr.push(key.to_s + "=" + value.to_s)
104
+ end
105
+ end
106
+
107
+ query_param_str = query_param_arr.join("&")
108
+ result_url_hash[:query] = query_param_str
109
+
110
+ # Signature String and Timestamp
111
+ # We can do this only for URLs that are created using urlEndpoint and path parameter
112
+ # because we need to know the endpoint to be able to remove it from the URL to create a signature
113
+ # for the remaining. With the src parameter, we would not know the "pattern" in the URL
114
+ if options[:signed] && !(options[:src])
115
+ intermediate_url = result_url_hash.fetch(:scheme, "") + "://" + result_url_hash.fetch(:host, "") + result_url_hash.fetch(:path, "")
116
+ if result_url_hash[:query]!=nil && result_url_hash[:query]!=""
117
+ intermediate_url += result_url_hash.fetch(:query, "")
118
+ end
119
+ end
120
+
121
+ url=hash_to_url(result_url_hash)
122
+ if options[:signed]
123
+ private_key = options[:private_key]
124
+ expire_seconds = options[:expire_seconds]
125
+ expire_timestamp = get_signature_timestamp(expire_seconds)
126
+ url_signature = get_signature(private_key, url, url_endpoint, expire_timestamp)
127
+ query_param_arr.push(constants.SIGNATURE_PARAMETER + "=" + url_signature)
128
+
129
+ if expire_timestamp && (expire_timestamp != constants.TIMESTAMP)
130
+ query_param_arr.push(constants.TIMESTAMP_PARAMETER + "=" + expire_timestamp.to_s)
131
+ end
132
+
133
+ query_param_str = query_param_arr.join("&")
134
+ result_url_hash[:query] = query_param_str
135
+
136
+ url=hash_to_url(result_url_hash)
137
+ end
138
+ url
139
+ end
140
+
141
+ def transformation_to_str(transformation)
142
+ # creates transformation_position string for url
143
+ # from transformation dictionary
144
+
145
+ unless transformation.is_a?(Array)
146
+ return ""
147
+ end
148
+
149
+ parsed_transforms = []
150
+ (0..(transformation.length - 1)).each do |i|
151
+ parsed_transform_step = []
152
+
153
+ transformation[i].keys.each do |key|
154
+ transform_key = constants.SUPPORTED_TRANS.fetch(key, nil)
155
+ transform_key ||= key
156
+
157
+ if transform_key == "oi" || transform_key == "di"
158
+ transformation[i][key][0] = "" if transformation[i][key][0] == "/"
159
+ transformation[i][key] = transformation[i][key].gsub("/", "@@")
160
+ end
161
+
162
+ if transformation[i][key] == "-"
163
+ parsed_transform_step.push(transform_key)
164
+ elsif transform_key == 'raw'
165
+ parsed_transform_step.push(transformation[i][key])
166
+ else
167
+ parsed_transform_step.push("#{transform_key}#{constants.TRANSFORM_KEY_VALUE_DELIMITER}#{transformation[i][key]}")
168
+ end
169
+ end
170
+ parsed_transforms.push(parsed_transform_step.join(constants.TRANSFORM_DELIMITER))
171
+ end
172
+ parsed_transforms.join(constants.CHAIN_TRANSFORM_DELIMITER)
173
+ end
174
+
175
+ def get_signature_timestamp(seconds)
176
+ # this function returns either default time stamp
177
+ # or current unix time and expiry seconds to get
178
+ # signature time stamp
179
+
180
+ if seconds.to_i == 0
181
+ constants.DEFAULT_TIMESTAMP
182
+ else
183
+ DateTime.now.strftime("%s").to_i + seconds.to_i
184
+ end
185
+ end
186
+
187
+ def get_signature(private_key, url, url_endpoint, expiry_timestamp)
188
+ # creates signature(hashed hex key) and returns from
189
+ # private_key, url, url_endpoint and expiry_timestamp
190
+ if expiry_timestamp==0
191
+ expiry_timestamp=constants.DEFAULT_TIMESTAMP
192
+ end
193
+ if url_endpoint[url_endpoint.length-1]!="/"
194
+ url_endpoint+="/"
195
+ end
196
+ replaced_url=url.gsub(url_endpoint, "")
197
+ replaced_url = replaced_url + expiry_timestamp.to_s
198
+ OpenSSL::HMAC.hexdigest("SHA1", private_key, replaced_url)
199
+ end
200
+
201
+ def extend_url_options(options)
202
+ attr_dict = {"public_key": @req_obj.public_key,
203
+ "private_key": @req_obj.private_key,
204
+ "url_endpoint": @req_obj.url_endpoint,
205
+ "transformation_position": @req_obj.transformation_position, }
206
+ # extending url options
207
+ attr_dict.merge(options)
208
+ end
209
+
210
+ def hash_to_url(url_hash)
211
+ generated_url = url_hash.fetch(:scheme, "") + "://" + url_hash.fetch(:host, "") + url_hash.fetch(:path, "")
212
+ if url_hash[:query] != ""
213
+ generated_url = generated_url + "?" + url_hash.fetch(:query, "")
214
+ return generated_url
215
+ end
216
+ generated_url
217
+ end
218
+
219
+ def trim_slash(str, both = true)
220
+ if str == ""
221
+ return ""
222
+ end
223
+ # remove slash from a string
224
+ # if both is not provide trims both slash
225
+ # example - '/abc/' returns 'abc'
226
+ # if both=false it will only trim end slash
227
+ # example - '/abc/' returns '/abc'
228
+ # NOTE: IT'S RECOMMENDED TO USE inbuilt .chomp('string you want to remove')
229
+ # FOR REMOVING ONLY TRAILING SLASh
230
+ if both
231
+ str[0].chomp("/") + str[1..-2] + str[-1].chomp("/")
232
+ else
233
+ str.chomp("/")
234
+ end
235
+ end
236
+
237
+ # class Imagekit
238
+
239
+ # end
240
+ end
241
+ end
@@ -0,0 +1,44 @@
1
+ require "date"
2
+ require "securerandom"
3
+
4
+ module ImageKitIo
5
+ module Utils
6
+ module Calculation
7
+ DEFAULT_TIME_DIFF = 60 * 30
8
+
9
+ module_function
10
+
11
+ def is_valid_hex(hex_string)
12
+ # checks if hexadecimal value is valid or not
13
+ /^[[:xdigit:]]+$/ === hex_string
14
+ end
15
+
16
+ def hamming_distance(first, second)
17
+ # Calculate Hamming distance between to hex string
18
+ unless is_valid_hex(first) && is_valid_hex(second)
19
+ raise ArgumentError, "Both argument should be hexadecimal"
20
+ end
21
+ a = first.to_i(16)
22
+ b = second.to_i(16)
23
+ (a ^ b).to_s(2).count("1")
24
+ end
25
+
26
+ def get_authenticated_params(token, expire, private_key)
27
+ # return authenticated param
28
+ default_expire = DateTime.now.strftime("%s").to_i + DEFAULT_TIME_DIFF
29
+ token ||= SecureRandom.uuid
30
+
31
+ auth_params = {'token': token, 'expire': expire, 'signature': ""}
32
+ unless private_key
33
+ return nil
34
+ end
35
+
36
+ signature = OpenSSL::HMAC.hexdigest("SHA1", private_key, token.to_s + expire.to_s)
37
+ auth_params[:token] = token
38
+ auth_params[:expire] = expire || default_expire
39
+ auth_params[:signature] = signature
40
+ auth_params
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,48 @@
1
+ require 'json'
2
+
3
+ module ImageKitIo
4
+ module Utils
5
+ module Formatter
6
+
7
+ module_function
8
+ def snake_to_camel(word)
9
+ word_list = word.split("_")
10
+ result = []
11
+ word_list&.each { |i|
12
+ if i == word_list[0]
13
+ result.push(i)
14
+ else
15
+ result.push(i.capitalize)
16
+ end
17
+ }
18
+ result.join
19
+ end
20
+
21
+ def camel_to_snake(camel_word)
22
+ # convert camel case to snake case
23
+ camel_word.to_s.gsub(/::/, "/")
24
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
25
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
26
+ .tr("-", "_")
27
+ .downcase
28
+ end
29
+
30
+ def request_formatter(data)
31
+ result = {}
32
+ data.each do |key, val|
33
+ result[snake_to_camel(key.to_s)] = val
34
+ end
35
+ result
36
+ end
37
+
38
+ def format_to_json(options, key, expected_class)
39
+ options ||= {}
40
+ val = options[key]
41
+ if !val.nil? && val.is_a?(expected_class)
42
+ options[key] = options[key].to_json
43
+ end
44
+ options
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,36 @@
1
+ require_relative './formatter'
2
+
3
+ module ImageKitIo
4
+ module Utils
5
+ module OptionValidator
6
+ include Formatter
7
+ include Constantable
8
+
9
+ module_function
10
+
11
+ def validate_upload_options(options)
12
+
13
+ # Validates upload value, checks if params are valid,
14
+ # changes snake to camel case which is supported by
15
+ # ImageKitIo server
16
+
17
+
18
+ response_list = []
19
+ options.each do |key, val|
20
+ if constants.VALID_UPLOAD_OPTIONS.include?(key.to_s)
21
+ if val.is_a?(Array)
22
+ val = val.join(",")
23
+ end
24
+ if val.is_a?(TrueClass) || val.is_a?(FalseClass)
25
+ val = val.to_s
26
+ end
27
+ options[key] = val
28
+ else
29
+ return false
30
+ end
31
+ end
32
+ request_formatter(options)
33
+ end
34
+ end
35
+ end
36
+ end
data/lib/imagekitio.rb CHANGED
@@ -1,86 +1,13 @@
1
- require "imagekitio/railtie"
1
+ require "imagekitio/railtie" if defined? Rails
2
2
 
3
- require 'carrierwave'
4
3
  require 'base64'
5
- require_relative './carrierwave/storage/imagekit_store'
6
- require_relative './carrierwave/storage/ik_file'
7
- require_relative './carrierwave/support/uri_filename'
8
- require_relative './imagekit/imagekit.rb'
9
- require_relative "./imagekit/resource"
10
- require_relative "./imagekit/file"
11
- require_relative "./imagekit/url"
12
- require_relative "./imagekit/utils/calculation"
13
4
 
14
- module CarrierWave
15
- module Uploader
16
- class Base
17
-
18
- def initialize(*)
19
- ik_config=Rails.application.config.imagekit
20
- @imagekit=ImageKit::ImageKitClient.new(ik_config[:private_key],ik_config[:public_key],ik_config[:url_endpoint])
21
- @options={}
22
- end
23
-
24
- configure do |config|
25
- config.storage_engines[:imagekit_store] = 'CarrierWave::Storage::ImageKitStore'
26
- end
27
-
28
- def filename
29
- if options!=nil
30
- @options=options
31
- end
32
- folder=nil
33
- begin
34
- folder=store_dir
35
- rescue
36
- end
37
-
38
- if folder!=nil
39
- @options[:folder]=folder
40
- end
41
-
42
- if self.file!=nil
43
- base64=Base64.encode64(::File.open(self.file.file, "rb").read)
44
- resp=@imagekit.upload_file(open(self.file.file,'rb'),self.file.filename,@options)
45
- # ::File.delete(self.file.file)
46
- res=resp[:response].to_json
47
- if res!="null"
48
- res
49
- else
50
- "{\"filePath\":\"\",\"url\":\"\",\"name\":\"\"}"
51
- end
52
- else
53
- "{\"filePath\":\"\",\"url\":\"\",\"name\":\"\"}"
54
- end
55
- end
56
-
57
- def fileId
58
- JSON.parse(self.identifier)['fileId']
59
- end
60
-
61
- def blob
62
- JSON.parse(self.identifier)
63
- end
64
-
65
- def url_with(opt)
66
- path=JSON.parse(self.identifier)['filePath']
67
- opt[:path]=path
68
- url=@imagekit.url(opt)
69
- end
70
-
71
- def url
72
- JSON.parse(self.identifier)['url']
73
- end
74
-
75
- def options
76
- options={}
77
- end
78
-
79
- def store_dir
80
- store_dir=nil
81
- end
82
- end
83
-
84
- end
85
-
86
- end
5
+ require_relative './imagekitio/constant'
6
+ require_relative './imagekitio/base'
7
+ require_relative './imagekitio/configurable'
8
+ require_relative './imagekitio/client'
9
+ require_relative "./imagekitio/request"
10
+ require_relative "./imagekitio/url"
11
+ require_relative './imagekitio/api_service/custom_metadata_field'
12
+ require_relative './imagekitio/api_service/file'
13
+ require_relative './imagekitio/api_service/folder'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imagekitio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ImageKit.io team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-26 00:00:00.000000000 Z
11
+ date: 2021-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: carrierwave
@@ -64,6 +64,20 @@ dependencies:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
66
  version: '2.8'
67
+ - !ruby/object:Gem::Dependency
68
+ name: activestorage
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 5.2.0
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 5.2.0
67
81
  - !ruby/object:Gem::Dependency
68
82
  name: rails
69
83
  requirement: !ruby/object:Gem::Requirement
@@ -93,23 +107,35 @@ extra_rdoc_files: []
93
107
  files:
94
108
  - README.md
95
109
  - Rakefile
110
+ - lib/active_storage/active_storage.rb
111
+ - lib/active_storage/service/ik_file.rb
112
+ - lib/active_storage/service/image_kit_io_service.rb
113
+ - lib/carrierwave/carrierwave.rb
96
114
  - lib/carrierwave/storage/ik_file.rb
97
115
  - lib/carrierwave/storage/imagekit_store.rb
98
116
  - lib/carrierwave/support/uri_filename.rb
99
- - lib/imagekit/constants/defaults.rb
100
- - lib/imagekit/constants/errors.rb
101
- - lib/imagekit/constants/file.rb
102
- - lib/imagekit/constants/supported_transformation.rb
103
- - lib/imagekit/constants/url.rb
104
- - lib/imagekit/file.rb
105
- - lib/imagekit/imagekit.rb
106
- - lib/imagekit/resource.rb
107
- - lib/imagekit/sdk/version.rb
108
- - lib/imagekit/url.rb
109
- - lib/imagekit/utils/calculation.rb
110
- - lib/imagekit/utils/formatter.rb
111
117
  - lib/imagekitio.rb
118
+ - lib/imagekitio/api_service/bulk.rb
119
+ - lib/imagekitio/api_service/custom_metadata_field.rb
120
+ - lib/imagekitio/api_service/file.rb
121
+ - lib/imagekitio/api_service/folder.rb
122
+ - lib/imagekitio/base.rb
123
+ - lib/imagekitio/client.rb
124
+ - lib/imagekitio/configurable.rb
125
+ - lib/imagekitio/constant.rb
126
+ - lib/imagekitio/constants/default.rb
127
+ - lib/imagekitio/constants/error.rb
128
+ - lib/imagekitio/constants/file.rb
129
+ - lib/imagekitio/constants/supported_transformation.rb
130
+ - lib/imagekitio/constants/url.rb
131
+ - lib/imagekitio/errors.rb
112
132
  - lib/imagekitio/railtie.rb
133
+ - lib/imagekitio/request.rb
134
+ - lib/imagekitio/sdk/version.rb
135
+ - lib/imagekitio/url.rb
136
+ - lib/imagekitio/utils/calculation.rb
137
+ - lib/imagekitio/utils/formatter.rb
138
+ - lib/imagekitio/utils/option_validator.rb
113
139
  - lib/tasks/imagekitio/imagekitio_tasks.rake
114
140
  homepage: https://imagekit.io
115
141
  licenses:
@@ -131,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
157
  - !ruby/object:Gem::Version
132
158
  version: '0'
133
159
  requirements: []
134
- rubygems_version: 3.2.22
160
+ rubygems_version: 3.2.32
135
161
  signing_key:
136
162
  specification_version: 4
137
163
  summary: Automate image optimization on rails platforms.
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Enum for defaults
4
-
5
- class Default
6
- TRANSFORMATION_POSITION = "path"
7
- QUERY_TRANSFORMATION_POSITION = "query"
8
- VALID_TRANSFORMATION_POSITION = [TRANSFORMATION_POSITION,
9
- QUERY_TRANSFORMATION_POSITION,].freeze
10
- DEFAULT_TIMESTAMP = "9999999999"
11
- TRANSFORMATION_PARAMETER = "tr"
12
- CHAIN_TRANSFORM_DELIMITER = ":"
13
- TRANSFORM_DELIMITER = ","
14
- TRANSFORM_KEY_VALUE_DELIMITER = "-"
15
-
16
- SIGNATURE_PARAMETER = "ik-s"
17
- TIMESTAMP_PARAMETER = "ik-t"
18
- TIMESTAMP = "9999999999"
19
-
20
- end