carrierwave-data-uri 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2ebf035e2038b806c9c5853d1739a0409d139c5
4
- data.tar.gz: f4c1f3c293d142b8de10a1dd2508a822a00496a4
3
+ metadata.gz: 6763b9e42a19e7766f8eb11e610dedc2849e5e49
4
+ data.tar.gz: 8499f9d8ad15cd880ed7bfba07b03a58d1cfe0f3
5
5
  SHA512:
6
- metadata.gz: 49ed5dace03485cacb061532bea538cbc100d5a17d2ad882ef104b6e81163120daad724ea21e771a1313889579f0a4f07688473ff14564cdc56dd80ea10d5580
7
- data.tar.gz: 5057e986f1bfe8731dafc14a04581a63fb47dfbfdcfaefa3dae72d667eaa5cd427a9530adb648152c23691b971b803087c80bd39f257fa5015b0f93412954f08
6
+ metadata.gz: 4319d0ed174376671fa844abd7092ba414198db1ca2d0f3be136db969cfc9526e7e607247c70091e13163aa988ba2f4019bb58661257e3c72c71fc78b3bfae38
7
+ data.tar.gz: df9963c6c0dc6f793df5ffb5fa3a97870b8ff7b8f75e2984d276a97684d16fb9730d1e83f0864ffefc1d085f2106480c82cde8bb52d575f3c57fb3c471abcbcd
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ /uploads
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,14 @@
1
+ before_install:
2
+ - gem install bundler
3
+
4
+ notifications:
5
+ email: false
6
+
7
+ rvm:
8
+ - 2.0.0
9
+ - 2.1.2
10
+ - 2.2.3
11
+ - 2.3.0
12
+
13
+ gemfile:
14
+ - Gemfile
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # CarrierWave::DataUri
1
+ # CarrierWave::DataUri [![Build Status](https://travis-ci.org/timsly/carrierwave-data-uri.svg)](https://travis-ci.org/timsly/carrierwave-data-uri)
2
2
 
3
3
  Carrierwave plugin that allows create image from data uri
4
4
 
@@ -34,11 +34,12 @@ user.avatar_data_uri = 'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////8AAP///y
34
34
  user.save
35
35
  ```
36
36
 
37
- Optionally, to customize the file name, specify the `#{column}_data_filename` attribute before the `#{column}_data_uri` attribute.
37
+ Optionally, to customize the file name, specify the `#{column}_data_filename` and `#{column}_data_mimetype` attributes before the `#{column}_data_uri` attribute.
38
38
 
39
39
  ```ruby
40
40
  user = User.find 123
41
41
  user.avatar_data_filename = 'somefile.jpg'
42
+ user.avatar_data_mimetype = 'image/jpeg'
42
43
  user.avatar_data_uri = 'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////8AAP///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=='
43
44
  user.save
44
45
  ```
data/Rakefile CHANGED
@@ -1,2 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+ task default: :spec
2
6
 
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'rspec'
26
26
  spec.add_development_dependency 'activerecord'
27
+ spec.add_development_dependency 'sqlite3'
27
28
  end
@@ -8,10 +8,10 @@ module CarrierWave
8
8
  super
9
9
 
10
10
  class_eval <<-RUBY, __FILE__, __LINE__+1
11
- attr_accessor :#{column}_data_filename
11
+ attr_accessor :#{column}_data_filename, :#{column}_data_mimetype
12
12
 
13
13
  def #{column}_data_uri=(data)
14
- self.#{column} = Parser.new(data).to_file original_filename: self.#{column}_data_filename
14
+ self.#{column} = Parser.new(data).to_file original_filename: self.#{column}_data_filename, content_type: self.#{column}_data_mimetype
15
15
  end
16
16
  RUBY
17
17
  end
@@ -27,6 +27,7 @@ module CarrierWave
27
27
  file << binary_data
28
28
  file.rewind
29
29
  file.original_filename = options[:original_filename]
30
+ file.content_type = options[:content_type]
30
31
  file
31
32
  end
32
33
  end
@@ -3,11 +3,16 @@ require 'tempfile'
3
3
  module CarrierWave
4
4
  module DataUri
5
5
  class Tempfile < ::Tempfile
6
- attr_writer :original_filename
6
+ attr_writer :original_filename, :content_type
7
7
 
8
8
  def original_filename
9
- @original_filename || File.basename(@tmpname)
9
+ @original_filename || File.basename(path)
10
10
  end
11
+
12
+ def content_type
13
+ @content_type || MIME::Types.type_for(original_filename).first.content_type
14
+ end
15
+
11
16
  end
12
17
  end
13
18
  end
@@ -1,7 +1,7 @@
1
1
  module Carrierwave
2
2
  module Data
3
3
  module Uri
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,59 @@
1
+ RSpec.describe 'Integration' do
2
+ ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
3
+ ActiveRecord::Base.raise_in_transactional_callbacks = true
4
+ ActiveRecord::Migration.verbose = false
5
+
6
+ class TestMigration < ActiveRecord::Migration
7
+ def self.up
8
+ create_table :images, :force => true do |t|
9
+ t.column :src, :string
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :images
15
+ end
16
+ end
17
+
18
+ class ImageUploader < CarrierWave::Uploader::Base; end
19
+
20
+ class Image < ActiveRecord::Base
21
+ mount_uploader :src, ImageUploader
22
+ end
23
+
24
+ before(:all) { TestMigration.up }
25
+ after(:all) { TestMigration.down }
26
+ after { Image.destroy_all }
27
+
28
+ let(:gif_data_uri) do
29
+ 'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////8AAP///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=='
30
+ end
31
+ let(:jpeg_data_uri) do
32
+ 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAWRXhpZgAASUkqAAgAAAAAAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAr/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AL+AAf/Z'
33
+ end
34
+ let(:image) { Image.new }
35
+
36
+ it 'should save image with data_uri' do
37
+ image.src_data_uri = gif_data_uri
38
+ image.save!
39
+
40
+ expect(image[:src]).to be_present
41
+ expect(image.src.file.filename).to end_with '.gif'
42
+ end
43
+
44
+ it 'should create image with data_uri' do
45
+ new_image = Image.create! src_data_uri: gif_data_uri
46
+
47
+ expect(new_image[:src]).to be_present
48
+ expect(new_image.src.file.filename).to end_with '.gif'
49
+ end
50
+
51
+ it 'should update image with data_uri' do
52
+ image.src_data_uri = gif_data_uri
53
+ image.save!
54
+
55
+ image.update src_data_uri: jpeg_data_uri
56
+
57
+ expect(image.src.file.filename).to end_with '.jpeg'
58
+ end
59
+ end
data/spec/parser_spec.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'spec_helper'
2
-
3
1
  RSpec.describe CarrierWave::DataUri::Parser do
4
2
  let(:data_uri) do
5
3
  'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////8AAP///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=='
@@ -7,7 +5,7 @@ RSpec.describe CarrierWave::DataUri::Parser do
7
5
 
8
6
  describe 'initialization' do
9
7
  it 'should raise error when data is invalid' do
10
- expect { CarrierWave::DataUri::Parser.new 'invadli_data' }.to raise_error
8
+ expect { CarrierWave::DataUri::Parser.new 'invadli_data' }.to raise_error ArgumentError
11
9
  end
12
10
 
13
11
  it 'should parse data on init' do
@@ -0,0 +1,24 @@
1
+ RSpec.describe CarrierWave::DataUri::Tempfile do
2
+ let(:options) { {} }
3
+ let(:data_uri) do
4
+ 'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////8AAP///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=='
5
+ end
6
+
7
+ let(:tempfile) do
8
+ CarrierWave::DataUri::Parser.new(data_uri).to_file(options)
9
+ end
10
+
11
+
12
+ describe '#content_type' do
13
+ subject(:content_type) { tempfile.content_type }
14
+
15
+ describe 'without a content_type supplied' do
16
+ specify { expect(content_type).to eq 'image/gif' }
17
+ end
18
+
19
+ describe 'with a specified content_type' do
20
+ let(:options) { { content_type: 'image/jpeg' } }
21
+ specify { expect(content_type).to eq 'image/jpeg' }
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave-data-uri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tima Maslyuchenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-25 00:00:00.000000000 Z
11
+ date: 2016-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: carrierwave
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sqlite3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  description: Carrierwave plugin that allows create image from data uri
84
98
  email:
85
99
  - insside@gmail.com
@@ -88,6 +102,8 @@ extensions: []
88
102
  extra_rdoc_files: []
89
103
  files:
90
104
  - ".gitignore"
105
+ - ".rspec"
106
+ - ".travis.yml"
91
107
  - Gemfile
92
108
  - LICENSE.txt
93
109
  - README.md
@@ -98,8 +114,10 @@ files:
98
114
  - lib/carrierwave_data_uri/parser.rb
99
115
  - lib/carrierwave_data_uri/tempfile.rb
100
116
  - lib/carrierwave_data_uri/version.rb
117
+ - spec/integration_spec.rb
101
118
  - spec/parser_spec.rb
102
119
  - spec/spec_helper.rb
120
+ - spec/tempfile_spec.rb
103
121
  homepage: https://github.com/timsly/carrierwave-data-uri
104
122
  licenses:
105
123
  - MIT
@@ -120,10 +138,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
138
  version: '0'
121
139
  requirements: []
122
140
  rubyforge_project:
123
- rubygems_version: 2.2.2
141
+ rubygems_version: 2.5.2
124
142
  signing_key:
125
143
  specification_version: 4
126
144
  summary: Carrierwave plugin that allows create image from data uri
127
145
  test_files:
146
+ - spec/integration_spec.rb
128
147
  - spec/parser_spec.rb
129
148
  - spec/spec_helper.rb
149
+ - spec/tempfile_spec.rb