shrine-cloudinary 0.1.1 → 0.2.0
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 +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
|