carrierwave-qiniu 0.2.5 → 0.2.6

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: 24b8b0cf41531013c7b13a1a2b48f997b9a112ce
4
- data.tar.gz: 836021574d7018c854513f2a1caf3bdb1ad2b837
3
+ metadata.gz: e4f2676e8b7b98df69a4d64794ff9aa123fc6129
4
+ data.tar.gz: 0f2e39106d8f4ec702cc497535b1ecebe9f38be2
5
5
  SHA512:
6
- metadata.gz: f9a07551fe4fe866fdab074a0a53ca700e87b85d040caf255c63534d8017c4cdabba6549e358e8743c5d201efb5a676259c0a8af654c7170fefc87a2a0ffdadd
7
- data.tar.gz: 2011fb606f7a0ce8e5cef3a5262db2ff5d932d0122fbc81d09ae849b857508825fce85148fb7fd58579f3bdfa61c5cd9474e798c0a1d7f52fea55a9f91c1acf9
6
+ metadata.gz: 3b37ff5997e8456fa4893d1fa080582685f4a56ece2efaff66e1f426b067306c4a6fd7b6449083351ada005a3096459e6ef7d30d9c09c2d01889c2e650b2c611
7
+ data.tar.gz: cf8851827113cfd0379c43da1dd3c084421f785ed4de64c78a151ac3c191994d694d75305c3d9b7335ddfadc626f9f86d5990f592ac19ad281e4cd9319b8529e
data/CHANGELOG.md CHANGED
@@ -1,9 +1,16 @@
1
1
 
2
2
  ## CHANGE LOG
3
3
 
4
+ ### v0.2.6
5
+
6
+ - 提供图片样式的便利方法
7
+ https://github.com/huobazi/qiniu_direct_uploader/pull/68
8
+
9
+
4
10
  ### v0.2.5
5
11
 
6
12
  https://github.com/huobazi/carrierwave-qiniu/pull/61
13
+
7
14
  https://github.com/huobazi/carrierwave-qiniu/pull/62
8
15
 
9
16
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Carrierwave::Qiniu
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/carrierwave-qiniu@2x.png?0.2.4)](http://badge.fury.io/rb/carrierwave-qiniu)
3
+ [![Gem Version](https://badge.fury.io/rb/carrierwave-qiniu@2x.png?0.2.6)](http://badge.fury.io/rb/carrierwave-qiniu)
4
4
 
5
5
  This gem adds storage support for [Qiniu](http://qiniutek.com) to [Carrierwave](https://github.com/jnicklas/carrierwave)
6
6
  example: https://github.com/huobazi/carrierwave-qiniu-example
@@ -78,6 +78,44 @@ class AvatarUploader < CarrierWave::Uploader::Base
78
78
 
79
79
  end
80
80
  ```
81
+
82
+ You can use [qiniu image styles](https://qiniu.kf5.com/hc/kb/article/68884/) instead [version](https://github.com/carrierwaveuploader/carrierwave#adding-versions) processing of CarrierWave.
83
+ ```
84
+ # Case 1
85
+ class AvatarUploader < CarrierWave::Uploader::Base
86
+ storage :qiniu
87
+
88
+ qiniu_styles [:thumb, :large]
89
+ end
90
+
91
+ # original url
92
+ user.avatar.url
93
+
94
+ # thumb url
95
+ user.avatar.url(:thumb)
96
+ # http://.../avatar.jpg-thumb
97
+
98
+
99
+ # Case 2
100
+ class AvatarUploader < CarrierWave::Uploader::Base
101
+ storage :qiniu
102
+
103
+ qiniu_styles thumb: 'imageView2/1/w/200', large: 'imageView2/1/w/800'
104
+ end
105
+
106
+ # thumb url
107
+ user.avatar.url(:thumb)
108
+ # http://.../avatar.jpg-thumb
109
+
110
+ # inline thubm url
111
+ user.avatar.url(:thumb, inline: true)
112
+ # http://.../avatar.jpg?imageView2/1/w/200
113
+
114
+ # just style param
115
+ user.avatar.url(style: 'imageView2/1/w/200')
116
+ # http://.../avatar.jpg?imageView2/1/w/200
117
+ ```
118
+
81
119
  You can see a example project on: https://github.com/huobazi/carrierwave-qiniu-example
82
120
 
83
121
  or see the spec test on https://github.com/huobazi/carrierwave-qiniu/blob/master/spec/upload_spec.rb
@@ -2,6 +2,7 @@
2
2
  require "carrierwave-qiniu/version"
3
3
  require "carrierwave/storage/qiniu"
4
4
  require "carrierwave/qiniu/configuration"
5
+ require "carrierwave/qiniu/style"
5
6
  require "carrierwave/uploader/base"
6
7
 
7
8
  ::CarrierWave.configure do |config|
@@ -9,3 +10,4 @@ require "carrierwave/uploader/base"
9
10
  end
10
11
 
11
12
  ::CarrierWave::Uploader::Base.send(:include, ::CarrierWave::Qiniu::Configuration)
13
+ ::CarrierWave::Uploader::Base.send(:include, ::CarrierWave::Qiniu::Style)
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  module Carrierwave
3
3
  module Qiniu
4
- VERSION = "0.2.5"
4
+ VERSION = "0.2.6"
5
5
  end
6
6
  end
@@ -20,11 +20,30 @@ module CarrierWave
20
20
  add_config :qiniu_expires_in
21
21
  add_config :qiniu_up_host
22
22
  add_config :qiniu_private_url_expires_in
23
+ add_config :qiniu_style_separator
23
24
 
24
25
  alias_config :qiniu_protocal, :qiniu_protocol
26
+
27
+ reset_qiniu_config
25
28
  end
26
29
 
27
30
  module ClassMethods
31
+ # Set default value
32
+ def reset_qiniu_config
33
+ configure do |config|
34
+ config.qiniu_protocol = 'http'
35
+ config.qiniu_bucket_private = false
36
+ config.qiniu_block_size = 1024*1024*4
37
+ config.qiniu_async_ops = ''
38
+ config.qiniu_can_overwrite = false
39
+ config.qiniu_private_url_expires_in = 3600
40
+ config.qiniu_callback_url = ''
41
+ config.qiniu_callback_body = ''
42
+ config.qiniu_persistent_notify_url = ''
43
+ config.qiniu_style_separator = '-'
44
+ end
45
+ end
46
+
28
47
  def alias_config(new_name, old_name)
29
48
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
30
49
  def self.#{new_name}(value=nil)
@@ -0,0 +1,35 @@
1
+ require 'carrierwave/qiniu/url'
2
+
3
+ module CarrierWave
4
+ module Qiniu
5
+ module Style
6
+ extend ActiveSupport::Concern
7
+
8
+ class_methods do
9
+ # === Examples:
10
+ #
11
+ # qiniu_styles [:thumbnail, :large]
12
+ # qiniu_styles :thumbnail => 'imageView/0/w/200', :large => 'imageView/0/w/800'
13
+ # qiniu_styles
14
+ #
15
+ def qiniu_styles(versions = nil)
16
+ # Override #url method when set styles, otherwise still default strategy.
17
+ unless include? ::CarrierWave::Qiniu::Url
18
+ send(:include, ::CarrierWave::Qiniu::Url)
19
+ end
20
+
21
+ @qiniu_styles = {}
22
+ if versions.is_a? Array
23
+ @qiniu_styles = versions.map { |version| [version.to_sym, nil] }.to_h
24
+ elsif versions.is_a? Hash
25
+ @qiniu_styles = versions.symbolize_keys
26
+ end
27
+ end
28
+
29
+ def get_qiniu_styles
30
+ @qiniu_styles
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,45 @@
1
+ module CarrierWave
2
+ module Qiniu
3
+ module Url
4
+ # === Examples:
5
+ #
6
+ # avatar.url(:version)
7
+ # avatar.url(:version, inline: true)
8
+ # avatar.url(style: 'imageView2/0/w/200')
9
+ #
10
+ def url(*args)
11
+ return super if args.empty?
12
+
13
+ if args.first.is_a? Hash
14
+ options = args.first
15
+ # Usage: avatar.url(style: 'imageView/0/w/200')
16
+ if options[:style]
17
+ url = super({})
18
+ return "#{url}?#{options[:style]}"
19
+ end
20
+ else
21
+ version = args.first.to_sym
22
+ if qiniu_styles.key? version.to_sym
23
+ options = args.last
24
+
25
+ # TODO: handle private url
26
+ url = super({})
27
+ # Usage: avatar.url(:version, inline: true)
28
+ if options.present? && options.is_a?(Hash) && options[:inline] && qiniu_styles[version]
29
+ return "#{url}?#{qiniu_styles[version]}"
30
+ else # Usage: avatar.url(:version)
31
+ return "#{url}#{self.class.qiniu_style_separator}#{version}"
32
+ end
33
+ end
34
+ end
35
+
36
+ # Fallback to original url
37
+ super
38
+ end
39
+
40
+ def qiniu_styles
41
+ self.class.get_qiniu_styles
42
+ end
43
+ end
44
+ end
45
+ end
@@ -24,6 +24,7 @@ module CarrierWave
24
24
  @qiniu_callback_url = options[:qiniu_callback_url] || ''
25
25
  @qiniu_callback_body = options[:qiniu_callback_body] || ''
26
26
  @qiniu_persistent_notify_url = options[:qiniu_persistent_notify_url] || ''
27
+ @qiniu_style_separator = options[:qiniu_style_separator] || '-'
27
28
  init
28
29
  end
29
30
 
@@ -197,7 +198,8 @@ module CarrierWave
197
198
  :qiniu_private_url_expires_in => @uploader.qiniu_private_url_expires_in,
198
199
  :qiniu_callback_url => @uploader.qiniu_callback_url,
199
200
  :qiniu_callback_body => @uploader.qiniu_callback_body,
200
- :qiniu_persistent_notify_url => @uploader.qiniu_persistent_notify_url
201
+ :qiniu_persistent_notify_url => @uploader.qiniu_persistent_notify_url,
202
+ :qiniu_style_separator => @uploader.qiniu_style_separator
201
203
  }
202
204
 
203
205
  config[:qiniu_async_ops] = Array(@uploader.qiniu_async_ops).join(';') rescue ''
data/spec/spec_helper.rb CHANGED
@@ -47,9 +47,6 @@ end
47
47
 
48
48
  config.qiniu_bucket = ENV['qiniu_bucket']
49
49
  config.qiniu_bucket_domain = ENV['qiniu_bucket_domain']
50
-
51
- config.qiniu_block_size = 4*1024*1024
52
- config.qiniu_protocol = "http"
53
50
  end
54
51
 
55
52
  def load_file(fname)
@@ -60,4 +57,3 @@ end
60
57
  RSpec.configure do |config|
61
58
 
62
59
  end
63
-
data/spec/upload_spec.rb CHANGED
@@ -77,12 +77,15 @@ require 'carrierwave/processing/mini_magick'
77
77
  self.qiniu_bucket = 'not_exists'
78
78
  end
79
79
 
80
- class Photo < ActiveRecord::Base
80
+ class WrongPhoto < ActiveRecord::Base
81
+ self.table_name = 'photos'
82
+
81
83
  mount_uploader :image, WrongUploader
82
84
  end
83
85
 
84
86
  f = load_file("mm.jpg")
85
- photo = Photo.new(:image => f)
87
+ photo = WrongPhoto.new(:image => f)
88
+ # FIXME: also raise error, see: CarrierWave::Qiniu#store L54
86
89
  photo.save
87
90
  expect(photo).to_not be_valid
88
91
 
@@ -150,4 +153,90 @@ require 'carrierwave/processing/mini_magick'
150
153
  expect(photo.image.file.exists?).to eq(false)
151
154
  end
152
155
  end
156
+
157
+ context "Styles" do
158
+
159
+ context 'array styles' do
160
+ class ArrayStylesUploader < CarrierWave::Uploader::Base
161
+ qiniu_styles [:thumb]
162
+
163
+ def store_dir
164
+ "carrierwave-qiniu-spec"
165
+ end
166
+ end
167
+
168
+ class ArrayStyledPhoto < ActiveRecord::Base
169
+ self.table_name = 'photos'
170
+
171
+ mount_uploader :image, ArrayStylesUploader
172
+ end
173
+
174
+ it 'style url' do
175
+ f = load_file("mm.jpg")
176
+ photo = ArrayStyledPhoto.new(image: f)
177
+ photo.save
178
+ photo.errors.count.should == 0
179
+
180
+ expect(photo.image.url).not_to be_nil
181
+ puts photo.image.url('thumb')
182
+ expect(photo.image.url('thumb').end_with?("mm.jpg-thumb")).to eq true
183
+ end
184
+ end
185
+
186
+ context "Hash styles" do
187
+ class HashStylesUploader < CarrierWave::Uploader::Base
188
+ qiniu_styles thumb: "imageView2/0/w/200"
189
+
190
+ def store_dir
191
+ "carrierwave-qiniu-spec"
192
+ end
193
+ end
194
+
195
+ class HashStyledPhoto < ActiveRecord::Base
196
+ self.table_name = 'photos'
197
+
198
+ mount_uploader :image, HashStylesUploader
199
+ end
200
+
201
+ it 'style url' do
202
+ f = load_file("mm.jpg")
203
+ photo = HashStyledPhoto.new(image: f)
204
+ photo.save
205
+ photo.errors.count.should == 0
206
+
207
+ expect(photo.image.url).not_to be_nil
208
+ puts photo.image.url('thumb')
209
+ expect(photo.image.url('thumb').end_with?("mm.jpg-thumb")).to eq true
210
+ end
211
+
212
+ it 'inline style url' do
213
+ f = load_file("mm.jpg")
214
+ photo = HashStyledPhoto.new(image: f)
215
+ photo.save
216
+ puts photo.image.url('thumb', inline: true)
217
+ expect(photo.image.url('thumb', inline: true).end_with?("mm.jpg?imageView2/0/w/200")).to eq true
218
+ end
219
+ end
220
+
221
+ context "Only Style param" do
222
+ class StylesUploader < CarrierWave::Uploader::Base
223
+ qiniu_styles
224
+ end
225
+
226
+ class StyledPhoto < ActiveRecord::Base
227
+ self.table_name = 'photos'
228
+
229
+ mount_uploader :image, StylesUploader
230
+ end
231
+
232
+ it 'url' do
233
+ f = load_file("mm.jpg")
234
+ photo = StyledPhoto.new(image: f)
235
+ photo.save
236
+ puts photo.image.url(style: 'imageView2/0/w/200')
237
+ expect(photo.image.url(style: 'imageView2/0/w/200').end_with?("mm.jpg?imageView2/0/w/200")).to eq true
238
+ end
239
+ end
240
+
241
+ end
153
242
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave-qiniu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marble Wu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-09 00:00:00.000000000 Z
11
+ date: 2016-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: carrierwave
@@ -56,6 +56,8 @@ files:
56
56
  - lib/carrierwave-qiniu.rb
57
57
  - lib/carrierwave-qiniu/version.rb
58
58
  - lib/carrierwave/qiniu/configuration.rb
59
+ - lib/carrierwave/qiniu/style.rb
60
+ - lib/carrierwave/qiniu/url.rb
59
61
  - lib/carrierwave/storage/qiniu.rb
60
62
  - lib/carrierwave/uploader/base.rb
61
63
  - spec/mm.jpg