paperclip-imgur 0.1.1 → 0.1.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 +4 -4
 - data/.rspec +1 -1
 - data/README.md +7 -0
 - data/lib/paperclip/storage/imgur.rb +5 -3
 - data/paperclip-imgur.gemspec +4 -2
 - data/spec/paperclip/storage/imgur_spec.rb +43 -39
 - metadata +32 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d8877dbb4a1024efedb5aaf05ed464ba3afec1e5
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e42b2eb47c205eb82c9d11fd94051da3dea856a8
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 91805a6e3e48e39cd241229e705ec509858440696459d435cb8d95251c4760b7ee23e1896131e7026c06f013df00192eb6f88af23d22d3f78102d8ae8ab066da
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 101fc71a146559fb2c6a533ab4b6b7bcd83fdc151bcf8e20f35c708f2ac7b196df6029fd44a74d91b7607587f558591c9606d2fab9aa7e3dc8b10f461966734c
         
     | 
    
        data/.rspec
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            --color 
     | 
| 
      
 1 
     | 
    
         
            +
            --color
         
     | 
    
        data/README.md
    CHANGED
    
    
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'yaml'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'erb'
         
     | 
| 
       3 
     | 
    
         
            -
            require ' 
     | 
| 
      
 3 
     | 
    
         
            +
            require 'imgurapi'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module Paperclip
         
     | 
| 
       6 
6 
     | 
    
         
             
              module Storage
         
     | 
| 
         @@ -64,7 +64,7 @@ module Paperclip 
     | 
|
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         
             
                    return @url_generator.for(size, {}) if image_id.nil? || image_id.empty? # Show Paperclip's default missing image path
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                    :: 
     | 
| 
      
 67 
     | 
    
         
            +
                    ::Imgurapi::Image.new(id: image_id).url(size)
         
     | 
| 
       68 
68 
     | 
    
         
             
                  end
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
                  # Returns the path of the attachment.
         
     | 
| 
         @@ -83,7 +83,7 @@ module Paperclip 
     | 
|
| 
       83 
83 
     | 
    
         
             
                  private
         
     | 
| 
       84 
84 
     | 
    
         | 
| 
       85 
85 
     | 
    
         
             
                  def imgur_session
         
     | 
| 
       86 
     | 
    
         
            -
                    @imgur_session ||= :: 
     | 
| 
      
 86 
     | 
    
         
            +
                    @imgur_session ||= ::Imgurapi::Session.instance(@imgur_credentials)
         
     | 
| 
       87 
87 
     | 
    
         
             
                  end
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
89 
     | 
    
         
             
                  def parse_credentials(credentials = nil)
         
     | 
| 
         @@ -96,6 +96,8 @@ module Paperclip 
     | 
|
| 
       96 
96 
     | 
    
         
             
                                    YAML.load(ERB.new(File.read(credentials.path)).result)
         
     | 
| 
       97 
97 
     | 
    
         
             
                                  when String, Pathname
         
     | 
| 
       98 
98 
     | 
    
         
             
                                    YAML.load(ERB.new(File.read(credentials)).result)
         
     | 
| 
      
 99 
     | 
    
         
            +
                                  else
         
     | 
| 
      
 100 
     | 
    
         
            +
                                    credentials
         
     | 
| 
       99 
101 
     | 
    
         
             
                                  end
         
     | 
| 
       100 
102 
     | 
    
         | 
| 
       101 
103 
     | 
    
         
             
                    return credentials.stringify_keys if credentials.respond_to? :stringify_keys
         
     | 
    
        data/paperclip-imgur.gemspec
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            Gem::Specification.new do |gem|
         
     | 
| 
       6 
6 
     | 
    
         
             
              gem.name          = 'paperclip-imgur'
         
     | 
| 
       7 
     | 
    
         
            -
              gem.version       = '0.1. 
     | 
| 
      
 7 
     | 
    
         
            +
              gem.version       = '0.1.2'
         
     | 
| 
       8 
8 
     | 
    
         
             
              gem.authors       = ['Daniel Cruz Horts']
         
     | 
| 
       9 
9 
     | 
    
         
             
              gem.description   = %q{Extends Paperclip with Imgur storage}
         
     | 
| 
       10 
10 
     | 
    
         
             
              gem.summary       = gem.description
         
     | 
| 
         @@ -16,5 +16,7 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       16 
16 
     | 
    
         
             
              gem.test_files    = gem.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
       17 
17 
     | 
    
         
             
              gem.require_paths = ['lib']
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
              gem.add_dependency 'imgurapi', '~>  
     | 
| 
      
 19 
     | 
    
         
            +
              gem.add_dependency 'imgurapi', '~> 3.0.0'
         
     | 
| 
      
 20 
     | 
    
         
            +
              gem.add_development_dependency 'byebug'
         
     | 
| 
      
 21 
     | 
    
         
            +
              gem.add_development_dependency 'rspec'
         
     | 
| 
       20 
22 
     | 
    
         
             
            end
         
     | 
| 
         @@ -12,84 +12,88 @@ class CreateUsers < ActiveRecord::Migration 
     | 
|
| 
       12 
12 
     | 
    
         
             
            end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            describe Paperclip::Storage::Imgur do
         
     | 
| 
       15 
     | 
    
         
            -
               
     | 
| 
      
 15 
     | 
    
         
            +
              def set_options(options)
         
     | 
| 
      
 16 
     | 
    
         
            +
                stub_const(
         
     | 
| 
      
 17 
     | 
    
         
            +
                  'User',
         
     | 
| 
      
 18 
     | 
    
         
            +
                  Class.new(ActiveRecord::Base) do
         
     | 
| 
      
 19 
     | 
    
         
            +
                    has_attached_file :avatar, {storage: :imgur}.merge(options)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                )
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              before :all do
         
     | 
| 
       16 
25 
     | 
    
         
             
                ActiveRecord::Base.send(:include, Paperclip::Glue)
         
     | 
| 
       17 
26 
     | 
    
         | 
| 
       18 
27 
     | 
    
         
             
                FileUtils.rm_rf 'tmp'
         
     | 
| 
       19 
28 
     | 
    
         
             
                FileUtils.mkdir_p 'tmp'
         
     | 
| 
       20 
29 
     | 
    
         
             
                ActiveRecord::Base.establish_connection('sqlite3:///tmp/foo.sqlite3')
         
     | 
| 
       21 
30 
     | 
    
         
             
                CreateUsers.migrate(:up)
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
31 
     | 
    
         
             
                Paperclip.options[:log] = false
         
     | 
| 
       24 
32 
     | 
    
         
             
              end
         
     | 
| 
       25 
     | 
    
         
            -
              
         
     | 
| 
       26 
     | 
    
         
            -
              describe '#parse_credentials' do
         
     | 
| 
       27 
     | 
    
         
            -
                def set_options(options)
         
     | 
| 
       28 
     | 
    
         
            -
                  stub_const('User', Class.new(ActiveRecord::Base) {
         
     | 
| 
       29 
     | 
    
         
            -
                      has_attached_file :avatar, { :storage => :imgur }.merge(options)
         
     | 
| 
       30 
     | 
    
         
            -
                    })
         
     | 
| 
       31 
     | 
    
         
            -
                end
         
     | 
| 
       32 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
              after :all do
         
     | 
| 
      
 35 
     | 
    
         
            +
                CreateUsers.migrate(:down)
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              describe '#parse_credentials' do
         
     | 
| 
       33 
39 
     | 
    
         
             
                it 'should complain when providing unsuitable credentials' do
         
     | 
| 
       34 
     | 
    
         
            -
                  set_options(: 
     | 
| 
       35 
     | 
    
         
            -
                  expect { User.new.avatar }.to raise_error
         
     | 
| 
      
 40 
     | 
    
         
            +
                  set_options(imgur_credentials: 1)
         
     | 
| 
       36 
41 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                   
     | 
| 
       38 
     | 
    
         
            -
                  expect { User.new.avatar }.to raise_error
         
     | 
| 
      
 42 
     | 
    
         
            +
                  expect { User.new.avatar }.to raise_error ArgumentError
         
     | 
| 
       39 
43 
     | 
    
         
             
                end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       41 
45 
     | 
    
         
             
                it 'should accept a properly formed hash' do
         
     | 
| 
       42 
     | 
    
         
            -
                  set_options(: 
     | 
| 
      
 46 
     | 
    
         
            +
                  set_options(imgur_credentials: {client_key: '1', client_secret: '2', access_token: '3', refresh_token: '4'})
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
       43 
48 
     | 
    
         
             
                  expect { User.new.avatar }.to_not raise_error
         
     | 
| 
       44 
49 
     | 
    
         
             
                end
         
     | 
| 
       45 
50 
     | 
    
         | 
| 
       46 
51 
     | 
    
         
             
                it 'should use config/imgur.yml under a Rails application if we left credentials blank' do
         
     | 
| 
       47 
     | 
    
         
            -
                  stub_const( 
     | 
| 
      
 52 
     | 
    
         
            +
                  stub_const(
         
     | 
| 
      
 53 
     | 
    
         
            +
                    'Rails',
         
     | 
| 
      
 54 
     | 
    
         
            +
                    Class.new {
         
     | 
| 
       48 
55 
     | 
    
         
             
                      def self.env
         
     | 
| 
       49 
56 
     | 
    
         
             
                        'testing'
         
     | 
| 
       50 
57 
     | 
    
         
             
                      end
         
     | 
| 
       51 
58 
     | 
    
         
             
                      def self.root
         
     | 
| 
       52 
59 
     | 
    
         
             
                        Dir.pwd
         
     | 
| 
       53 
60 
     | 
    
         
             
                      end
         
     | 
| 
       54 
     | 
    
         
            -
                    } 
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 61 
     | 
    
         
            +
                    }
         
     | 
| 
      
 62 
     | 
    
         
            +
                  )
         
     | 
| 
       56 
63 
     | 
    
         
             
                  set_options({})
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
       57 
65 
     | 
    
         
             
                  expect { User.new.avatar }.to_not raise_error
         
     | 
| 
       58 
66 
     | 
    
         
             
                end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
       60 
68 
     | 
    
         
             
                it 'should accept a file path' do
         
     | 
| 
       61 
     | 
    
         
            -
                  set_options(: 
     | 
| 
      
 69 
     | 
    
         
            +
                  set_options(imgur_credentials: "#{Dir.pwd}/config/imgur.yml")
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
       62 
71 
     | 
    
         
             
                  expect { User.new.avatar }.to_not raise_error
         
     | 
| 
       63 
72 
     | 
    
         
             
                end
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
       65 
74 
     | 
    
         
             
                it 'should accept a file' do
         
     | 
| 
       66 
     | 
    
         
            -
                  set_options(: 
     | 
| 
      
 75 
     | 
    
         
            +
                  set_options(imgur_credentials: File.open("#{Dir.pwd}/config/imgur.yml", 'r'))
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
       67 
77 
     | 
    
         
             
                  expect { User.new.avatar }.to_not raise_error
         
     | 
| 
       68 
78 
     | 
    
         
             
                end
         
     | 
| 
       69 
79 
     | 
    
         
             
              end
         
     | 
| 
       70 
     | 
    
         
            -
              
         
     | 
| 
       71 
     | 
    
         
            -
              describe '#url' do
         
     | 
| 
       72 
     | 
    
         
            -
                before(:each) do
         
     | 
| 
       73 
     | 
    
         
            -
                  stub_const('User', Class.new(ActiveRecord::Base) { has_attached_file :avatar, :storage => :imgur, :imgur_credentials => {:app_key => '1', :app_secret => '2', :access_token => '3', :access_token_secret => '4'} })
         
     | 
| 
       74 
80 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
      
 81 
     | 
    
         
            +
              describe '#url' do
         
     | 
| 
      
 82 
     | 
    
         
            +
                before do
         
     | 
| 
      
 83 
     | 
    
         
            +
                  User = Class.new(ActiveRecord::Base) { has_attached_file :avatar, storage: :imgur, imgur_credentials: {client_key: '1', client_secret: '2', access_token: '3', refresh_token: '4'} }
         
     | 
| 
       77 
84 
     | 
    
         
             
                end
         
     | 
| 
       78 
85 
     | 
    
         | 
| 
       79 
86 
     | 
    
         
             
                it "should return the missing image path if there's no image" do
         
     | 
| 
       80 
     | 
    
         
            -
                  User.new.avatar.url. 
     | 
| 
       81 
     | 
    
         
            -
                  User.new.avatar.url(:random_size). 
     | 
| 
      
 87 
     | 
    
         
            +
                  expect(User.new.avatar.url).to eq '/avatars/original/missing.png'
         
     | 
| 
      
 88 
     | 
    
         
            +
                  expect(User.new.avatar.url(:random_size)).to eq '/avatars/random_size/missing.png'
         
     | 
| 
       82 
89 
     | 
    
         
             
                end
         
     | 
| 
       83 
90 
     | 
    
         | 
| 
       84 
91 
     | 
    
         
             
                it "should return Imgur's image paths if there's an image" do
         
     | 
| 
       85 
     | 
    
         
            -
                   
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
                   
     | 
| 
       88 
     | 
    
         
            -
                   
     | 
| 
       89 
     | 
    
         
            -
                   
     | 
| 
       90 
     | 
    
         
            -
                  @user.avatar.url(:large_thumbnail).should eq(session.url(@imgur_hash, :large_thumbnail))
         
     | 
| 
      
 92 
     | 
    
         
            +
                  user = User.create(avatar_file_name: 'random_valid_hash')
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                  expect(user.avatar.url(:random_size)).to eq "http://i.imgur.com/random_valid_hash.jpg"
         
     | 
| 
      
 95 
     | 
    
         
            +
                  expect(user.avatar.url(:small_square)).to eq "http://i.imgur.com/random_valid_hashs.jpg"
         
     | 
| 
      
 96 
     | 
    
         
            +
                  expect(user.avatar.url(:large_thumbnail)).to eq "http://i.imgur.com/random_valid_hashl.jpg"
         
     | 
| 
       91 
97 
     | 
    
         
             
                end
         
     | 
| 
       92 
     | 
    
         
            -
                
         
     | 
| 
       93 
98 
     | 
    
         
             
              end
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
            end
         
     | 
| 
      
 99 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: paperclip-imgur
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Daniel Cruz Horts
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-08-06 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: imgurapi
         
     | 
| 
         @@ -16,14 +16,42 @@ dependencies: 
     | 
|
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
17 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version:  
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 3.0.0
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version:  
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 3.0.0
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: byebug
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       27 
55 
     | 
    
         
             
            description: Extends Paperclip with Imgur storage
         
     | 
| 
       28 
56 
     | 
    
         
             
            email: 
         
     | 
| 
       29 
57 
     | 
    
         
             
            executables: []
         
     |