Skip to content

Commit

Permalink
Merge 207db37 into 4e08828
Browse files Browse the repository at this point in the history
  • Loading branch information
gabifija committed Jan 23, 2019
2 parents 4e08828 + 207db37 commit d64e16d
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 15 deletions.
18 changes: 13 additions & 5 deletions app/helpers/filestack_rails/application_helper.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
include FilestackRails::Transform
include FilestackRails::Version

module FilestackRails
module ApplicationHelper
def filestack_js_include_tag
javascript_include_tag(
'https://static.filestackapi.com/v3/filestack.js', type: 'text/javascript'
)
v2 = -> { javascript_include_tag('https://static.filestackapi.com/v3/filestack.js', type: 'text/javascript') }
v3 = -> { javascript_include_tag('https://static.filestackapi.com/filestack-js/1.x.x/filestack.min.js', type: 'text/javascript') }

get_filestack_js_result(v2: v2, v3: v3)
end

def filestack_js_init_tag
Expand Down Expand Up @@ -52,9 +54,15 @@ def create_javascript_for_picker(callback, options)
else
options.to_json
end
"(function(){
v2 = -> { "(function(){
#{client_name}.pick(#{json_string}).then(function(data){#{callback}(data)})
})()"
})()" }

v3 = -> { json_string = "#{json_string}".slice!(1, json_string.length-2) # removed curly brackets help to generate pickerOptions in js
"(function(){
#{client_name}.picker({#{json_string}, onUploadDone: data => #{callback}(data)}).open()
})()" }
get_filestack_js_result(v2: v2, v3: v3)
end

def get_client_and_api_key
Expand Down
6 changes: 5 additions & 1 deletion lib/filestack_rails/configuration.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module FilestackRails
class Configuration
attr_accessor :api_key, :client_name, :secret_key, :security, :expiry, :app_secret, :cname
attr_accessor :api_key, :client_name, :secret_key, :security, :expiry, :app_secret, :cname, :version

def api_key
@api_key or raise "Set config.filestack_rails.api_key"
Expand All @@ -10,6 +10,10 @@ def client_name
@client_name or 'filestack_client'
end

def version
@version or 'v2'
end

def expiry
@expiry or ( Time.zone.now.to_i + 600 )
end
Expand Down
21 changes: 21 additions & 0 deletions lib/filestack_rails/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
class FilestackVersion
def initialize(results)
@version = ::Rails.application.config.filestack_rails.version
@results = results
end

def determine_filestack_js_result
begin
@results[@version.to_sym].call
rescue
raise 'Set correct version in config.filestack_rails.version'
end
end
end

module FilestackRails
VERSION = '3.2.2'

module Version
def get_filestack_js_result(results)
FilestackVersion.new(results).determine_filestack_js_result
end
end
end
54 changes: 45 additions & 9 deletions spec/lib/configuration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,36 +5,43 @@
FilestackRails::Configuration.new
end

describe "#api_key=" do
it "responds to api_key=" do
describe '#api_key=' do
it 'responds to api_key=' do
expect(configuration).to respond_to(:api_key=)
end
end

describe "#api_key" do
it "have defined value" do
describe '#api_key' do
it 'have defined value' do
configuration.api_key = "my api key"
expect(configuration.api_key).to eq("my api key")
end

it "raise error when @api_key is not defined" do
it 'raise error when @api_key is not defined' do
expect do
configuration.api_key
end.to raise_error(RuntimeError, "Set config.filestack_rails.api_key")
end.to raise_error(RuntimeError, 'Set config.filestack_rails.api_key')
end
end

describe "#security" do
it "has no security" do
describe '#security' do
it 'has no security' do
expect(configuration.security).to be(nil)
end

it "has security" do
it 'has security' do
configuration.app_secret = 'somesecret'
configuration.security = {}
expect(configuration.security.policy)
expect(configuration.security.signature)
end

it 'has not defined @app_secret' do
expect do
configuration.app_secret = nil
configuration.security = {}
end.to raise_error(RuntimeError, 'You must have secret key to use security')
end
end

describe '#cname' do
Expand All @@ -48,4 +55,33 @@
expect(configuration.cname).to eq cname
end
end

describe '#version' do
it 'has no version' do
expect(configuration.version).to eq('v2')
end

it 'has version' do
version = 'v3'
configuration.version = version
expect(configuration.version).to eq version
end
end

describe '#expiry' do
it 'has no expiry' do
now = Time.parse('2019-01-23 12:47:25 +0100')
zone = double('timezone')
allow(zone).to receive(:now).and_return(now)
allow(Time).to receive(:zone).and_return(zone)

expect(configuration.expiry).to eq(1548244645)
end

it 'has expiry' do
expiry = '1548244645'
configuration.expiry = expiry
expect(configuration.expiry).to eq expiry
end
end
end

0 comments on commit d64e16d

Please sign in to comment.