shrine-cloudinary 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +31 -3
- data/lib/shrine/storage/cloudinary.rb +40 -7
- data/shrine-cloudinary.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0a65cec872c9e53cd6e760407333608c4ab7cef
|
4
|
+
data.tar.gz: 4bee964dc688c03e8065ab278d14a248a799eed0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c8a99b7cf9e1ed644715101652a50ed97d5e3c61b1a86cece3b16b0649ad8d4506a68762685e2ab3b02fd3a5b592012358f8c7754d062e2ad2bd7e32ecee922
|
7
|
+
data.tar.gz: b0fb81334fb1f5bc14862cb4a67c283f1a7de3a2af5d79fefed864a4cc60dc6da494c0196e57af69b849f1e92a13833a8b7408e2529f759fe68ada6f9b520959
|
data/README.md
CHANGED
@@ -125,9 +125,37 @@ Shrine::Storage::Cloudinary.new(
|
|
125
125
|
|
126
126
|
### Metadata
|
127
127
|
|
128
|
-
If you decide to do incoming transformations (processing
|
129
|
-
|
130
|
-
|
128
|
+
If you decide to do incoming transformations (processing on upload),
|
129
|
+
shrine-cloudinary will automatically update the extension, size, MIME type,
|
130
|
+
width and height metadata for the uploaded file.
|
131
|
+
|
132
|
+
You can choose to save the whole Cloudinary response to metadata by setting
|
133
|
+
`:store_data` to true:
|
134
|
+
|
135
|
+
```rb
|
136
|
+
Shrine::Storage::Cloudinary.new(store_data: true, **cloudinary_options)
|
137
|
+
```
|
138
|
+
```rb
|
139
|
+
user = User.create(avatar: image_file)
|
140
|
+
user.avatar.metadata["cloudinary"] #=>
|
141
|
+
# {
|
142
|
+
# "public_id" => "foo",
|
143
|
+
# "version" => 1450294102,
|
144
|
+
# "signature" => "379ab45c743951abaea38d6a18ee631af599763f",
|
145
|
+
# "width" => 100,
|
146
|
+
# "height" => 67,
|
147
|
+
# "format" => "jpg",
|
148
|
+
# "resource_type" => "image",
|
149
|
+
# "created_at" => "2015-12-16T19:28:22Z",
|
150
|
+
# "tags" => [],
|
151
|
+
# "bytes" => 6147,
|
152
|
+
# "type" => "upload",
|
153
|
+
# "etag" => "54b5d33d07b1dc4084d7694825371cd7",
|
154
|
+
# "url" => "http://res.cloudinary.com/dkjm0biaa/image/upload/v14502\n94102/foo.jpg",
|
155
|
+
# "secure_url" => "https://res.cloudinary.com/dkjm0biaa/image/upload/v1450294102/foo.jpg",
|
156
|
+
# "original_filename" => "image"
|
157
|
+
# }
|
158
|
+
```
|
131
159
|
|
132
160
|
### Clearing storage
|
133
161
|
|
@@ -6,11 +6,12 @@ class Shrine
|
|
6
6
|
class Cloudinary
|
7
7
|
attr_reader :prefix, :resource_type, :upload_options
|
8
8
|
|
9
|
-
def initialize(prefix: nil, large: nil, resource_type: "image", upload_options: {})
|
9
|
+
def initialize(prefix: nil, large: nil, resource_type: "image", store_data: nil, upload_options: {})
|
10
10
|
@prefix = prefix
|
11
11
|
@large = large
|
12
12
|
@resource_type = resource_type
|
13
13
|
@upload_options = upload_options.merge(resource_type: resource_type)
|
14
|
+
@store_data = store_data
|
14
15
|
end
|
15
16
|
|
16
17
|
def upload(io, id, metadata = {})
|
@@ -112,20 +113,52 @@ class Shrine
|
|
112
113
|
end
|
113
114
|
|
114
115
|
def update_id!(result, id)
|
115
|
-
unless resource_type == "raw"
|
116
|
-
id.gsub!(/#{File.extname(id)}$/, ".#{result.fetch("format")}")
|
117
|
-
end
|
116
|
+
id.gsub!(/#{File.extname(id)}$/, ".#{result.fetch("format")}") unless resource_type == "raw"
|
118
117
|
end
|
119
118
|
|
120
119
|
def update_metadata!(result, metadata)
|
121
|
-
|
122
|
-
|
123
|
-
|
120
|
+
retrieved_metadata = {
|
121
|
+
"size" => result["bytes"],
|
122
|
+
"mime_type" => MIME_TYPES[result["format"]],
|
123
|
+
"width" => result["width"],
|
124
|
+
"height" => result["height"],
|
125
|
+
}
|
126
|
+
retrieved_metadata["cloudinary"] = result if @store_data
|
127
|
+
retrieved_metadata.reject! { |key, value| value.nil? }
|
128
|
+
|
129
|
+
metadata.update(retrieved_metadata)
|
124
130
|
end
|
125
131
|
|
126
132
|
[:Uploader, :Downloader, :Utils, :Api].each do |name|
|
127
133
|
define_method(name.downcase) { ::Cloudinary.const_get(name) }
|
128
134
|
end
|
135
|
+
|
136
|
+
MIME_TYPES = {
|
137
|
+
# Images
|
138
|
+
"jpg" => "image/jpeg",
|
139
|
+
"png" => "image/png",
|
140
|
+
"gif" => "image/gif",
|
141
|
+
"bmp" => "image/bmp",
|
142
|
+
"tiff" => "image/tiff",
|
143
|
+
"ico" => "image/x-icon",
|
144
|
+
"pdf" => "application/pdf",
|
145
|
+
"eps" => "application/postscript",
|
146
|
+
"psd" => "application/octet-stream",
|
147
|
+
"svg" => "image/svg+xml",
|
148
|
+
"webp" => "image/webp",
|
149
|
+
|
150
|
+
# Videos
|
151
|
+
"mp4" => "video/mp4",
|
152
|
+
"flv" => "video/x-flv",
|
153
|
+
"mov" => "video/quicktime",
|
154
|
+
"ogv" => "video/ogg",
|
155
|
+
"webm" => "video/webm",
|
156
|
+
"3gp" => "video/3gpp",
|
157
|
+
"3g2" => "video/3gpp2",
|
158
|
+
"wmv" => "video/x-ms-wmv",
|
159
|
+
"mpeg" => "video/mpeg",
|
160
|
+
"avi" => "video/x-msvideo",
|
161
|
+
}
|
129
162
|
end
|
130
163
|
end
|
131
164
|
end
|
data/shrine-cloudinary.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shrine-cloudinary
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janko Marohnić
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cloudinary
|