anaconda 1.0.1 → 1.0.2

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
2
  SHA1:
3
- metadata.gz: 20a626eb236bf4ff39e32bb83f8b975fa664530c
4
- data.tar.gz: 6a991a2b23aa1c971f0a0deaee2f8e6c3713082e
3
+ metadata.gz: 6a362cf9690829d3184624cbf62dc7a0b91cc555
4
+ data.tar.gz: e3fed3967d2f2c8eb7adbee4a64a1f2fa35ecd2b
5
5
  SHA512:
6
- metadata.gz: 9d41093e0fd99096c0a8c9bfbb306a147146b5bb81dca7168008264df11b93d3c959397efc062e9273ca44468a299bf25ff62882b796587a85e236e8892c6279
7
- data.tar.gz: ac78dfde3e04e5e6c778d591b85d40030c6a6a6e2a294d2c15fbcc89f366d28c39c315549b3fcc3e3f75b29df15b418fc412db49210d104299b50508b9ed1d2e
6
+ metadata.gz: bc25838f832c4fe24971d5c054dd8da3923781ee02ffc0f3f71415a636ca37646b257697970f7764922d2e11722ca1ab042b5337acdd78abcae6302c87536be8
7
+ data.tar.gz: fe04aefa077d7d1da356b7a8fdbd70dbb304321101ed542e5b779b1939e67a738398010942bf5ea37ab1d1b51cb8863ba28e28e2f89d1d7ea42d59fbe90fd705
data/README.markdown CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Dead simple direct-to-s3 file uploading for your rails app.
4
4
 
5
- Current Version: 1.0.0
5
+ Current Version: 1.0.2
6
6
 
7
7
  ## Installation
8
8
 
@@ -202,6 +202,9 @@ If you return false to the following events it will prevent the default behavior
202
202
  From version 1.0.0 on we have used [Semantic Versioning](http://semver.org/).
203
203
 
204
204
  ## Changelog
205
+ * 1.0.2
206
+ * Refactor S3Uploader into it's own class so it can be used outside of the form helper
207
+
205
208
  * 1.0.1
206
209
  * Use OpenSSL::Digest instead of deprecated OpenSSL::Digest::Digest.
207
210
 
data/lib/anaconda.rb CHANGED
@@ -3,6 +3,7 @@ require 'anaconda/anaconda'
3
3
  require 'anaconda/errors'
4
4
  require 'anaconda/anaconda_for'
5
5
  require 'anaconda/railtie'
6
+ require 'anaconda/s3_uploader'
6
7
  require 'anaconda/engine'
7
8
  require 'anaconda/version'
8
9
 
@@ -23,7 +23,7 @@ module Anaconda
23
23
  options[:base_key] = instance.send(options[:base_key].to_s) if options[:base_key].kind_of? Symbol
24
24
  end
25
25
 
26
- uploader = S3Uploader.new(options)
26
+ uploader = Anaconda::S3Uploader.new(options)
27
27
  output += self.input_field "file", name: "file", id: element_id, as: :file, data: {url: uploader.url, form_data: uploader.fields.to_json, media_types: Anaconda.js_file_types}
28
28
  end
29
29
 
@@ -64,84 +64,5 @@ module Anaconda
64
64
 
65
65
  output.html_safe
66
66
  end
67
-
68
- class S3Uploader
69
- def initialize(options)
70
- @options = options.reverse_merge(
71
- id: "fileupload",
72
- aws_access_key_id: Anaconda.aws[:aws_access_key],
73
- aws_secret_access_key: Anaconda.aws[:aws_secret_key],
74
- bucket: Anaconda.aws[:aws_bucket],
75
- acl: "public-read",
76
- expiration: 10.hours.from_now.utc,
77
- max_file_size: 500.megabytes,
78
- as: "file"
79
- )
80
- end
81
-
82
- def form_options
83
- {
84
- id: @options[:id],
85
- method: "post",
86
- authenticity_token: false,
87
- multipart: true,
88
- data: {
89
- post: @options[:post],
90
- as: @options[:as],
91
- base_key: base_key
92
- }
93
- }
94
- end
95
-
96
- def fields
97
- {
98
- :key => key,
99
- :acl => @options[:acl],
100
- "Content-Type" => "application/octet-stream",
101
- :policy => policy,
102
- :signature => signature,
103
- "AWSAccessKeyId" => @options[:aws_access_key_id],
104
- }
105
- end
106
-
107
- def key
108
- @key ||= "#{base_key}/${filename}"
109
- end
110
-
111
- def base_key
112
- @options[:base_key]
113
- end
114
-
115
- def url
116
- "https://s3.amazonaws.com/#{@options[:bucket]}/"
117
- end
118
-
119
- def policy
120
- Base64.encode64(policy_data.to_json).gsub("\n", "")
121
- end
122
-
123
- def policy_data
124
- {
125
- expiration: @options[:expiration],
126
- conditions: [
127
- #["starts-with", "$utf8", ""],
128
- ["starts-with", "$key", base_key],
129
- ["starts-with", "$Content-Type", ""],
130
- ["content-length-range", 1, @options[:max_file_size]],
131
- {bucket: @options[:bucket]},
132
- {acl: @options[:acl]}
133
- ]
134
- }
135
- end
136
-
137
- def signature
138
- Base64.encode64(
139
- OpenSSL::HMAC.digest(
140
- OpenSSL::Digest.new('sha1'),
141
- @options[:aws_secret_access_key], policy
142
- )
143
- ).gsub("\n", "")
144
- end
145
- end
146
67
  end
147
68
  end
@@ -0,0 +1,80 @@
1
+ module Anaconda
2
+ class S3Uploader
3
+ def initialize(options)
4
+ @options = options.reverse_merge(
5
+ id: "fileupload",
6
+ aws_access_key_id: Anaconda.aws[:aws_access_key],
7
+ aws_secret_access_key: Anaconda.aws[:aws_secret_key],
8
+ bucket: Anaconda.aws[:aws_bucket],
9
+ acl: "public-read",
10
+ expiration: 10.hours.from_now.utc,
11
+ max_file_size: 500.megabytes,
12
+ as: "file"
13
+ )
14
+ end
15
+
16
+ def form_options
17
+ {
18
+ id: @options[:id],
19
+ method: "post",
20
+ authenticity_token: false,
21
+ multipart: true,
22
+ data: {
23
+ post: @options[:post],
24
+ as: @options[:as],
25
+ base_key: base_key
26
+ }
27
+ }
28
+ end
29
+
30
+ def fields
31
+ {
32
+ :key => key,
33
+ :acl => @options[:acl],
34
+ "Content-Type" => "application/octet-stream",
35
+ :policy => policy,
36
+ :signature => signature,
37
+ "AWSAccessKeyId" => @options[:aws_access_key_id],
38
+ }
39
+ end
40
+
41
+ def key
42
+ @key ||= "#{base_key}/${filename}"
43
+ end
44
+
45
+ def base_key
46
+ @options[:base_key]
47
+ end
48
+
49
+ def url
50
+ "https://s3.amazonaws.com/#{@options[:bucket]}/"
51
+ end
52
+
53
+ def policy
54
+ Base64.encode64(policy_data.to_json).gsub("\n", "")
55
+ end
56
+
57
+ def policy_data
58
+ {
59
+ expiration: @options[:expiration],
60
+ conditions: [
61
+ #["starts-with", "$utf8", ""],
62
+ ["starts-with", "$key", base_key],
63
+ ["starts-with", "$Content-Type", ""],
64
+ ["content-length-range", 1, @options[:max_file_size]],
65
+ {bucket: @options[:bucket]},
66
+ {acl: @options[:acl]}
67
+ ]
68
+ }
69
+ end
70
+
71
+ def signature
72
+ Base64.encode64(
73
+ OpenSSL::HMAC.digest(
74
+ OpenSSL::Digest.new('sha1'),
75
+ @options[:aws_secret_access_key], policy
76
+ )
77
+ ).gsub("\n", "")
78
+ end
79
+ end
80
+ end
@@ -1,5 +1,5 @@
1
1
  module Anaconda
2
2
  module Rails
3
- VERSION = "1.0.1"
3
+ VERSION = "1.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anaconda
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben McFadden
@@ -63,6 +63,7 @@ files:
63
63
  - lib/anaconda/errors.rb
64
64
  - lib/anaconda/form_builder_helpers.rb
65
65
  - lib/anaconda/railtie.rb
66
+ - lib/anaconda/s3_uploader.rb
66
67
  - lib/anaconda/version.rb
67
68
  - lib/generators/anaconda/install_generator.rb
68
69
  - lib/generators/anaconda/migration_generator.rb