filestack-rails 4.0.7 → 5.0.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
  SHA1:
3
- metadata.gz: 1bad0153c8be3d93667eab2aaff101faa8314a04
4
- data.tar.gz: 50f7223d85f45c9cca7119ea963d6985592c6715
3
+ metadata.gz: 4585b209ea7e22c920cf51484b9202c920f893e6
4
+ data.tar.gz: 5107599301ef1abc00035cfd47a6500eb431f761
5
5
  SHA512:
6
- metadata.gz: 4e277fa546e32a55e5191956fe99e7158142181bdb769213570871df6d8fe3ba7ba7487eaff64e757424885e6280b176fac8bcf1744c7fdce652e0839b766e59
7
- data.tar.gz: ec8963c733fe13bf05033a55b8790e790868856a80ea2698be42dba604b12ce10a001ef74108b8a15a2b75728651be259c555c697d287679d72b82e711b89542
6
+ metadata.gz: 3cc03c00d69dd1d5ac3a59978081f4fa8b5d0b44767300bfb5638f1dde9aa5267549d3231efe2c8db3793c8be59ec9a6722c4f7bd56244a708e248b2beb36f8a
7
+ data.tar.gz: d2495c2c7c2779a5b361dbe0f93980a4db048dd864707a6a62304d1b357a22a50927a774ef29c5c0302f777dca85e65d02378793ffe55d82be83ea9c11250c85
data/README.md CHANGED
@@ -64,6 +64,21 @@ config.filestack_rails.version = 'v2'
64
64
  # filestack-js (1.x.x)
65
65
  config.filestack_rails.version = 'v3'
66
66
  ```
67
+
68
+ For Filestack Rails SDK v.5.0.0+, you have to provide picker version precisely. By default the picker version is setup to `3.x.x`. If you want to use older filestack-js version (0.11.5), you have to configure `version` to `0.11.5` in `config/application.rb`:
69
+ ```ruby
70
+ # filestack-js (0.11.5)
71
+ config.filestack_rails.version = '0.11.5'
72
+
73
+ # filestack-js (1.x.x)
74
+ config.filestack_rails.version = '1.x.x'
75
+
76
+ # filestack-js (3.x.x)
77
+ config.filestack_rails.version = '3.x.x'
78
+ ```
79
+
80
+ You can find all available filestack-js versions in [`lib/filestack_rails/version.rb`](./lib/filestack_rails/version.rb)
81
+
67
82
  ### CNAME
68
83
 
69
84
  If you have set up a custom CNAME, you can add it to your configuration file. The Picker will modify all assets to formatted with your domain origin instead of Filestack's.
@@ -1,14 +1,11 @@
1
1
  require 'json'
2
2
  include FilestackRails::Transform
3
- include FilestackRails::Version
3
+ include FilestackRails::FilestackJs
4
4
 
5
5
  module FilestackRails
6
6
  module ApplicationHelper
7
7
  def filestack_js_include_tag
8
- v2 = -> { javascript_include_tag('https://static.filestackapi.com/v3/filestack.js', type: 'text/javascript') }
9
- v3 = -> { javascript_include_tag('https://static.filestackapi.com/filestack-js/1.x.x/filestack.min.js', type: 'text/javascript') }
10
-
11
- get_filestack_js_result(v2: v2, v3: v3)
8
+ javascript_include_tag(get_filestack_js.url, type: 'text/javascript')
12
9
  end
13
10
 
14
11
  def filestack_js_init_tag
@@ -49,31 +46,15 @@ module FilestackRails
49
46
  end
50
47
 
51
48
  def create_javascript_for_picker(callback, options)
52
- client_name, _api_key = get_client_and_api_key
49
+ client_name, api_key = get_client_and_api_key
53
50
  other_callbacks = build_callbacks_js(options) if options
54
- json_string = if options.nil?
55
- ''
56
- else
57
- options.to_json
58
- end
59
- v2 = -> do
60
- <<~HTML
61
- (function(){
62
- #{client_name}.pick(#{json_string}).then(function(data){#{callback}(data)})
63
- })()
64
- HTML
65
- end
51
+ options = if options.nil?
52
+ ''
53
+ else
54
+ options.to_json
55
+ end
66
56
 
67
- v3 = -> do
68
- json_string = json_string[1..-2] # removed curly brackets help to generate pickerOptions in js
69
-
70
- <<~HTML
71
- (function(){
72
- #{client_name}.picker({ onUploadDone: data => #{callback}(data)#{other_callbacks}, #{json_string} }).open()
73
- })()
74
- HTML
75
- end
76
- get_filestack_js_result(v2: v2, v3: v3)
57
+ get_filestack_js.picker(client_name, api_key, options, callback, other_callbacks)
77
58
  end
78
59
 
79
60
  def build_callbacks_js(options)
@@ -104,10 +85,7 @@ module FilestackRails
104
85
  signature, policy = get_policy_and_signature
105
86
 
106
87
  if policy && signature
107
- signature_and_policy = { signature: signature, policy: policy }
108
- v2 = -> { signature_and_policy.to_json }
109
- v3 = -> { { security: signature_and_policy }.to_json }
110
- get_filestack_js_result(v2: v2, v3: v3)
88
+ get_filestack_js.security(signature, policy)
111
89
  else
112
90
  "''"
113
91
  end
@@ -2,6 +2,7 @@ require "filestack_rails/configuration"
2
2
  require "filestack_rails/transform"
3
3
  require "filestack_rails/engine"
4
4
  require "filestack_rails/version"
5
+ require "filestack_rails/filestack_js"
5
6
 
6
7
  module FilestackRails
7
8
  # Your code goes here...
@@ -1,7 +1,11 @@
1
+ require 'net/http'
2
+
1
3
  module FilestackRails
2
4
  class Configuration
3
5
  attr_accessor :api_key, :client_name, :secret_key, :security, :expiry, :app_secret, :cname, :version
4
6
 
7
+ OUTDATED_VERSION = '0.11.5'
8
+
5
9
  def api_key
6
10
  @api_key or raise "Set config.filestack_rails.api_key"
7
11
  end
@@ -11,7 +15,7 @@ module FilestackRails
11
15
  end
12
16
 
13
17
  def version
14
- @version or 'v3'
18
+ @version or '3.x.x'
15
19
  end
16
20
 
17
21
  def expiry
@@ -0,0 +1,73 @@
1
+ require 'net/http'
2
+
3
+ class Picker
4
+ attr_reader :url
5
+
6
+ def initialize
7
+ raise 'Incorrect config.filestack_rails.version' unless url_exists?(filestack_js_url)
8
+ @url = filestack_js_url
9
+ end
10
+
11
+ def version
12
+ ::Rails.application.config.filestack_rails.version
13
+ end
14
+
15
+ def security(signature, policy)
16
+ { security: { signature: signature, policy: policy } }.to_json
17
+ end
18
+
19
+ def filestack_js_url
20
+ "https://static.filestackapi.com/filestack-js/#{version}/filestack.min.js"
21
+ end
22
+
23
+ def picker(client_name, api_key, options, callback, other_callbacks = nil)
24
+ options_string = options[1..-2] # removed curly brackets help to generate pickerOptions in js
25
+
26
+ <<~HTML
27
+ (function(){
28
+ #{client_name}.picker({ onUploadDone: data => #{callback}(data)#{other_callbacks}, #{options_string} }).open()
29
+ })()
30
+ HTML
31
+ end
32
+
33
+ def url_exists?(url)
34
+ uri = URI(url)
35
+ request = Net::HTTP.new(uri.host)
36
+ response = request.request_head(uri.path)
37
+ response.code.to_i == 200
38
+ rescue
39
+ false
40
+ end
41
+ end
42
+
43
+ class OutdatedPicker < Picker
44
+ def filestack_js_url
45
+ 'https://static.filestackapi.com/v3/filestack.js'
46
+ end
47
+
48
+ def picker(client_name, api_key, options, callback, other_callbacks = nil)
49
+ <<~HTML
50
+ (function(){
51
+ #{client_name}.pick(#{options}).then(function(data){#{callback}(data)})
52
+ })()
53
+ HTML
54
+ end
55
+
56
+ def security(signature, policy)
57
+ { signature: signature, policy: policy }.to_json
58
+ end
59
+ end
60
+
61
+ module FilestackRails
62
+ module FilestackJs
63
+ OUTDATED_VERSION = '0.11.5'
64
+
65
+ def get_filestack_js
66
+ if ::Rails.application.config.filestack_rails.version == OUTDATED_VERSION
67
+ OutdatedPicker.new
68
+ else
69
+ Picker.new
70
+ end
71
+ end
72
+ end
73
+ end
@@ -1,24 +1,3 @@
1
- class FilestackVersion
2
- def initialize(results)
3
- @version = ::Rails.application.config.filestack_rails.version
4
- @results = results
5
- end
6
-
7
- def determine_filestack_js_result
8
- begin
9
- @results[@version.to_sym].call
10
- rescue
11
- raise 'Set correct version in config.filestack_rails.version'
12
- end
13
- end
14
- end
15
-
16
1
  module FilestackRails
17
- VERSION = '4.0.7'
18
-
19
- module Version
20
- def get_filestack_js_result(results)
21
- FilestackVersion.new(results).determine_filestack_js_result
22
- end
23
- end
2
+ VERSION = '5.0.0'
24
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filestack-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.7
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - filestack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-04 00:00:00.000000000 Z
11
+ date: 2019-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -109,6 +109,7 @@ files:
109
109
  - lib/filestack-rails.rb
110
110
  - lib/filestack_rails/configuration.rb
111
111
  - lib/filestack_rails/engine.rb
112
+ - lib/filestack_rails/filestack_js.rb
112
113
  - lib/filestack_rails/transform.rb
113
114
  - lib/filestack_rails/version.rb
114
115
  - lib/tasks/filestack_rails_tasks.rake