inkfilepicker-rails 0.0.1
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 +15 -0
- data/lib/inkfilepicker-rails.rb +6 -0
- data/lib/inkfilepicker/form_builder.rb +54 -0
- data/lib/inkfilepicker/inkfilepicker.rb +28 -0
- data/lib/inkfilepicker/policy.rb +36 -0
- data/lib/inkfilepicker/railtie.rb +14 -0
- data/lib/inkfilepicker/version.rb +3 -0
- data/lib/inkfilepicker/view_helpers.rb +76 -0
- metadata +93 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NDMwZGNjNmQ5MmYyNGEyMjU4ODk1NGExZDZhZTQyMmQzNjE3NzkzZQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YmI0YTk5ODNkNDlhODhiZmY2OTg3OTM4NGJmNWRlYmM4NmY2MTU4ZQ==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZmE3NDQxNjg0YzViMWU0M2JkNGRhNzQ1Mjc2Y2QyZjI2NjE3MGIxOWQ2N2Y2
|
10
|
+
NGRhZjFmM2Y5MDQzNTc2OTMxMDdkMzczZTNjNzg1YmIxOTZmZTJkMWNhM2Nh
|
11
|
+
M2ViMzM3ZmY2M2U5OGFmODZmMmZkMjM0YjcxYzYzZWZlNGJlZjE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MWRlMDNiYTQ0YzZhYzkwYmU3NTg1ZWVhOGUwMTcyMWU5ZWI5N2IwMWJiMTUw
|
14
|
+
NmE1ODhlMGFmOGI2ZTkyZWU3MGI1NGRlYWIyMjE2YTdkYzNmOWRmYzcxZDQw
|
15
|
+
YzhhZmY3YzY1OTc2ZGU0OGNjODY2M2RkZWE3MmI1YWMwMTE2MDQ=
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Inkfilepicker
|
2
|
+
module FormBuilder
|
3
|
+
|
4
|
+
def inkfilepicker_field(method, options = {})
|
5
|
+
type = options.delete(:dragdrop) ? 'filepicker-dragdrop' : 'filepicker'
|
6
|
+
|
7
|
+
input_options = retrive_filepicker_options(options)
|
8
|
+
input_options['data-fp-apikey'] ||= Inkfilepicker.api_key
|
9
|
+
input_options.merge!(secure_filepicker) unless input_options['data-fp-policy'].present?
|
10
|
+
|
11
|
+
input_options['type'] = type
|
12
|
+
|
13
|
+
if ::Rails.version.to_i >= 4
|
14
|
+
ActionView::Helpers::Tags::TextField.new(@object_name, method, @template).tag('input', input_options)
|
15
|
+
else
|
16
|
+
ActionView::Helpers::InstanceTag.new(@object_name, method, @template).to_input_field_tag(type, input_options)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def retrive_filepicker_options(options)
|
23
|
+
mappings = {
|
24
|
+
:button_text => 'data-fp-button-text',
|
25
|
+
:button_class => 'data-fp-button-class',
|
26
|
+
:mimetypes => 'data-fp-mimetypes',
|
27
|
+
:extensions => 'data-fp-extensions',
|
28
|
+
:container => 'data-fp-container',
|
29
|
+
:services => 'data-fp-services',
|
30
|
+
:drag_text => 'data-fp-drag-text',
|
31
|
+
:drag_class => 'data-fp-drag-class',
|
32
|
+
:store_path => 'data-fp-store-path',
|
33
|
+
:store_location => 'data-fp-store-location',
|
34
|
+
:multiple => 'data-fp-multiple',
|
35
|
+
:onchange => 'onchange',
|
36
|
+
:class => 'class',
|
37
|
+
:value => 'value'
|
38
|
+
}
|
39
|
+
|
40
|
+
Hash[options.map {|k, v| [mappings[k] || k, v] }]
|
41
|
+
end
|
42
|
+
|
43
|
+
def secure_filepicker
|
44
|
+
return {} unless Inkfilepicker.secret_key.present?
|
45
|
+
grant = Policy.new
|
46
|
+
grant.call = [:pick, :store]
|
47
|
+
|
48
|
+
{
|
49
|
+
'data-fp-policy' => grant.policy,
|
50
|
+
'data-fp-signature' => grant.signature
|
51
|
+
}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Inkfilepicker
|
2
|
+
|
3
|
+
class << self
|
4
|
+
attr_accessor :api_key, :secret_key, :api_url, :default_expiry
|
5
|
+
end
|
6
|
+
|
7
|
+
self.api_key = nil
|
8
|
+
self.secret_key = nil
|
9
|
+
self.api_url = nil
|
10
|
+
self.default_expiry = nil
|
11
|
+
|
12
|
+
def self.api_key
|
13
|
+
@api_key || ENV['INKFILEPICKER_API_KEY']
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.secret_key
|
17
|
+
@secret_key || ENV['INKFILEPICKER_SECRET_KEY']
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.api_url
|
21
|
+
@api_url || '//api.filepicker.io/v1/filepicker.js'
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.default_expiry
|
25
|
+
@default_expiry || 600
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'openssl'
|
3
|
+
|
4
|
+
module Inkfilepicker
|
5
|
+
class Policy
|
6
|
+
attr_accessor :expiry, :call, :handle, :maxsize, :minsize, :path
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
[:expiry, :call, :handle, :maxsize, :minsize, :path].each do |input|
|
10
|
+
send("#{input}=", options[input]) unless options[input].nil?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def policy
|
15
|
+
Base64.urlsafe_encode64(json_policy)
|
16
|
+
end
|
17
|
+
|
18
|
+
def signature
|
19
|
+
OpenSSL::HMAC.hexdigest('sha256', Inkfilepicker.secret_key, policy)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def json_policy
|
24
|
+
hash = Hash.new
|
25
|
+
|
26
|
+
@expiry ||= Time.now.to_i + Inkfilepicker.default_expiry
|
27
|
+
|
28
|
+
[:expiry, :call, :handle, :maxsize, :minsize, :path].each do |input|
|
29
|
+
hash[input] = send(input) unless send(input).nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
MultiJson.dump(hash)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Inkfilepicker
|
2
|
+
|
3
|
+
class Railtie < ::Rails::Railtie
|
4
|
+
|
5
|
+
initializer "inkfilepicker.view_helpers" do
|
6
|
+
ActionView::Base.send(:include, Inkfilepicker::ViewHelpers)
|
7
|
+
end
|
8
|
+
|
9
|
+
initializer "inkfilepicker.form_builder" do
|
10
|
+
ActionView::Helpers::FormBuilder.send(:include, Inkfilepicker::FormBuilder)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module Inkfilepicker
|
2
|
+
|
3
|
+
module ViewHelpers
|
4
|
+
def inkfilepicker_js_include_tag
|
5
|
+
javascript_include_tag "#{Inkfilepicker.api_url}"
|
6
|
+
end
|
7
|
+
|
8
|
+
def inkfilepicker_save_button(text, url, mimetype, options = {})
|
9
|
+
options[:data] ||= {}
|
10
|
+
container = options.delete(:container)
|
11
|
+
services = options.delete(:services)
|
12
|
+
save_as = options.delete(:save_as_name)
|
13
|
+
|
14
|
+
options[:data]['fp-url'] = url
|
15
|
+
options[:data]['fp-apikey'] = Inkfilepicker.api_key
|
16
|
+
options[:data]['fp-mimetype'] = mimetype
|
17
|
+
options[:data]['fp-option-container'] = container if container
|
18
|
+
options[:data]['fp-option-services'] = Array(services).join(",") if services
|
19
|
+
options[:data]['fp-option-defaultSaveasName'] = save_as if save_as
|
20
|
+
button_tag(text, options)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Allows options to be passed to inkfilepicker_image_url and then falls back to normal Rails options for image_tag
|
24
|
+
# If specifying html width, height, pass it down to inkfilepicker for optimization
|
25
|
+
def inkfilepicker_image_tag(url, image_options={}, image_tag_options={})
|
26
|
+
image_tag(inkfilepicker_image_url(url, image_options), image_tag_options)
|
27
|
+
end
|
28
|
+
|
29
|
+
# w - Resize the image to this width.
|
30
|
+
#
|
31
|
+
# h - Resize the image to this height.
|
32
|
+
#
|
33
|
+
# fit - Specifies how to resize the image. Possible values are:
|
34
|
+
# clip: Resizes the image to fit within the specified parameters without
|
35
|
+
# distorting, cropping, or changing the aspect ratio
|
36
|
+
# crop: Resizes the image to fit the specified parameters exactly by
|
37
|
+
# removing any parts of the image that don't fit within the boundaries
|
38
|
+
# scales: Resizes the image to fit the specified parameters exactly by
|
39
|
+
# scaling the image to the desired size
|
40
|
+
# Defaults to "clip".
|
41
|
+
# align - Determines how the image is aligned when resizing and using the "fit" parameter. Check API for details.
|
42
|
+
#
|
43
|
+
# cache - Specifies if the image should be cached or not.
|
44
|
+
#
|
45
|
+
# crop - Crops the image to a specified rectangle. The input to this parameter
|
46
|
+
# should be 4 numbers for 'x,y,width,height' - for example,
|
47
|
+
# 'crop=10,20,200,250' would select the 200x250 pixel rectangle starting
|
48
|
+
# from 10 pixels from the left edge and 20 pixels from the top edge of the
|
49
|
+
# image.
|
50
|
+
#
|
51
|
+
# format - Specifies what format the image should be converted to, if any.
|
52
|
+
# Possible values are "jpg" and "png". For "jpg" conversions, you
|
53
|
+
# can additionally specify a quality parameter.
|
54
|
+
#
|
55
|
+
# quality - For jpeg conversion, specifies the quality of the resultant image.
|
56
|
+
# Quality should be an integer between 1 and 100
|
57
|
+
#
|
58
|
+
# watermark - Adds the specified absolute url as a watermark on the image.
|
59
|
+
#
|
60
|
+
# watersize - This size of the watermark, as a percentage of the base
|
61
|
+
# image (not the original watermark).
|
62
|
+
#
|
63
|
+
# waterposition - Where to put the watermark relative to the base image.
|
64
|
+
# Possible values for vertical position are "top","middle",
|
65
|
+
# "bottom" and "left","center","right", for horizontal
|
66
|
+
# position. The two can be combined by separating vertical
|
67
|
+
# and horizontal with a comma. The default behavior
|
68
|
+
# is bottom,right
|
69
|
+
def inkfilepicker_image_url(url, options = {})
|
70
|
+
query_params = options.slice(:w, :h, :fit, :align, :cache, :crop, :format, :quality, :watermark, :watersize, :waterposition).to_query
|
71
|
+
[url, "/convert?", query_params].join
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: inkfilepicker-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Scott V. Rosenthal
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-07-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Makes integrating inkfilepicker.com api service with rails easy
|
56
|
+
email: sr7575@gmail.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- lib/inkfilepicker/form_builder.rb
|
62
|
+
- lib/inkfilepicker/inkfilepicker.rb
|
63
|
+
- lib/inkfilepicker/policy.rb
|
64
|
+
- lib/inkfilepicker/railtie.rb
|
65
|
+
- lib/inkfilepicker/version.rb
|
66
|
+
- lib/inkfilepicker/view_helpers.rb
|
67
|
+
- lib/inkfilepicker-rails.rb
|
68
|
+
homepage: https://github.com/scottvrosenthal/inkfilepicker-rails
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
- GPL-2
|
72
|
+
metadata: {}
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 1.9.3
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 1.8.11
|
87
|
+
requirements: []
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 2.0.3
|
90
|
+
signing_key:
|
91
|
+
specification_version: 4
|
92
|
+
summary: Makes integrating inkfilepicker.com api service with rails easy
|
93
|
+
test_files: []
|