scribd-carrierwave 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc*
6
+ coverage/
7
+ coverage.data
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in scribd-carrierwave.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,23 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake'
3
+ require 'rspec/core/rake_task'
4
+ require 'cover_me'
5
+
6
+ desc "Run all specs"
7
+ RSpec::Core::RakeTask.new('spec')
8
+
9
+ task default: 'spec'
10
+
11
+ namespace :cover_me do
12
+
13
+ desc "Generates and opens code coverage report."
14
+ task :report do
15
+ require 'cover_me'
16
+ CoverMe.complete!
17
+ end
18
+
19
+ end
20
+
21
+ task :spec do
22
+ Rake::Task['cover_me:report'].invoke
23
+ end
@@ -0,0 +1,83 @@
1
+ require File.join(File.dirname(__FILE__), './scribd-carrierwave/version')
2
+ require File.join(File.dirname(__FILE__), './scribd-carrierwave/config')
3
+ require 'carrierwave'
4
+ require 'rscribd'
5
+
6
+ module ScribdCarrierWave
7
+ class << self
8
+ def included(base)
9
+ base.extend ClassMethods
10
+ end
11
+
12
+ def upload uploader
13
+ args = { file: uploader.url, access: 'private' }
14
+ scribd_user.upload(args)
15
+ end
16
+
17
+ def destroy uploader
18
+ document = scribd_user.find_document(uploader.ipaper_id) rescue nil
19
+ document.destroy if !document.nil?
20
+ end
21
+
22
+ module ClassMethods
23
+ def has_ipaper
24
+ include InstanceMethods
25
+ after :store, :upload_to_scribd
26
+ before :remove, :delete_from_scribd
27
+ end
28
+ end
29
+
30
+ module InstanceMethods
31
+ def self.included(base)
32
+ base.extend ClassMethods
33
+ end
34
+
35
+ def upload_to_scribd files
36
+ res = ScribdCarrierWave::upload(self)
37
+ set_params res
38
+ end
39
+
40
+ def delete_from_scribd
41
+ ScribdCarrierWave::destroy(self)
42
+ end
43
+
44
+ def display_ipaper(options = {})
45
+ id = options.delete(:id)
46
+ <<-END
47
+ <script type="text/javascript" src="http://www.scribd.com/javascripts/view.js"></script>
48
+ <div id="embedded_flash#{id}">#{options.delete(:alt)}</div>
49
+ <script type="text/javascript">
50
+ var scribd_doc = scribd.Document.getDoc(#{ipaper_id}, '#{ipaper_access_key}');
51
+ scribd_doc.addParam("hide_disabled_buttons", true)
52
+ scribd_doc.write("embedded_flash#{id}");
53
+ </script>
54
+ END
55
+ end
56
+
57
+ def ipaper_id
58
+ self.model.send("#{self.mounted_as.to_s}_ipaper_id")
59
+ end
60
+
61
+ def ipaper_access_key
62
+ self.model.send("#{self.mounted_as.to_s}_ipaper_access_key")
63
+ end
64
+
65
+ private
66
+
67
+ def set_params res
68
+ self.model.update_attributes({"#{self.mounted_as}_ipaper_id" => res.doc_id,
69
+ "#{self.mounted_as}_ipaper_access_key" => res.access_key})
70
+ end
71
+ end
72
+
73
+ private
74
+
75
+ def scribd_user
76
+ Scribd::API.instance.key = ScribdCarrierWave.config.key
77
+ Scribd::API.instance.secret = ScribdCarrierWave.config.secret
78
+ @scribd_user = Scribd::User.login(ScribdCarrierWave.config.username, ScribdCarrierWave.config.password)
79
+ end
80
+ end
81
+ end
82
+
83
+ CarrierWave::Uploader::Base.send(:include, ScribdCarrierWave) if Object.const_defined?("CarrierWave")
@@ -0,0 +1,8 @@
1
+ module ScribdCarrierWave
2
+ class << self
3
+ def config(&block)
4
+ yield configatron.cover_me if block_given?
5
+ configatron.cover_me
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ module Scribd
2
+ module Carrierwave
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "scribd-carrierwave/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "scribd-carrierwave"
7
+ s.version = Scribd::Carrierwave::VERSION
8
+ s.authors = ["Aubrey Rhodes"]
9
+ s.email = ["aubrey.c.rhodes@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = "Integration for rscirbd and carrierwave"
12
+ s.description = "Allows you to have a CarrierWave uploader automatically upload to scribd"
13
+
14
+ s.rubyforge_project = "scribd-carrierwave"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "rspec"
23
+ s.add_development_dependency "mocha"
24
+ s.add_development_dependency "cover_me"
25
+ s.add_runtime_dependency "rscribd"
26
+ s.add_runtime_dependency "carrierwave"
27
+ s.add_runtime_dependency "configatron"
28
+ end
@@ -0,0 +1,92 @@
1
+ require File.join(File.dirname(__FILE__), %w[spec_helper])
2
+
3
+ describe ScribdCarrierWave do
4
+ context "module methods" do
5
+ before(:each) do
6
+ @uploader = mock
7
+ @scribd_user_mock = mock
8
+ Scribd::User.stubs(:login).returns(@scribd_user_mock)
9
+ end
10
+
11
+ describe "upload" do
12
+ it "calls rscribd.upload with the correct arguments" do
13
+ @uploader.stubs(:url).returns('test_url')
14
+ @scribd_user_mock.expects(:upload).with(has_entries(file: 'test_url', access: 'private'))
15
+ ScribdCarrierWave::upload @uploader
16
+ end
17
+ end
18
+
19
+ describe "destroy" do
20
+ it "gets the correct document to destroy and calls destroy" do
21
+ @uploader.stubs(:ipaper_id).returns('test_id')
22
+ document = mock
23
+ document.expects(:destroy)
24
+ @scribd_user_mock.expects(:find_document).with('test_id').returns document
25
+ ScribdCarrierWave::destroy @uploader
26
+ end
27
+ end
28
+ end
29
+
30
+ context "instance methods" do
31
+ before(:each) do
32
+ @uploader = CarrierWave::Uploader::Base.new
33
+ @uploader.class_eval{has_ipaper}
34
+ @model = mock
35
+ @uploader.stubs(:model).returns(@model)
36
+ @mounted_as = :test_model
37
+ @uploader.stubs(:mounted_as).returns(@mounted_as)
38
+ end
39
+
40
+ describe "upload_to_scribd" do
41
+ it "calls upload" do
42
+ res = mock
43
+ res.stubs(:doc_id).returns("test_id")
44
+ res.stubs(:access_key).returns("test_access_key")
45
+ @model.expects(:update_attributes).with(has_entries('test_model_ipaper_id' => 'test_id',
46
+ 'test_model_ipaper_access_key' => 'test_access_key'))
47
+ .returns true
48
+ ScribdCarrierWave.expects(:upload).with(@uploader).returns(res)
49
+ @uploader.upload_to_scribd nil
50
+ end
51
+ end
52
+
53
+ describe "delete_from_scribd" do
54
+ it "calls destroy" do
55
+ ScribdCarrierWave.expects(:destroy).with(@uploader)
56
+ @uploader.delete_from_scribd
57
+ end
58
+ end
59
+
60
+ describe "display_ipaper" do
61
+ before(:each) do
62
+ @uploader.stubs(:ipaper_id).returns('test_id')
63
+ @uploader.stubs(:ipaper_access_key).returns('test_access_key')
64
+ end
65
+
66
+ it "returns an html string with the ipaper_id and ipaper_access_key included" do
67
+ html = @uploader.display_ipaper
68
+ html.should match /test_id/
69
+ html.should match /test_access_key/
70
+ end
71
+
72
+ it "sets the correct html id attributes" do
73
+ html = @uploader.display_ipaper({id: 'test_id'})
74
+ html.should match /id="embedded_flashtest_id"/
75
+ end
76
+ end
77
+
78
+ describe "ipaper_id" do
79
+ it "should return the value of the model's attribute" do
80
+ @model.expects(:test_model_ipaper_id)
81
+ @uploader.ipaper_id
82
+ end
83
+ end
84
+
85
+ describe "ipaper_access_key" do
86
+ it "should return the value of the model's attribute" do
87
+ @model.expects(:test_model_ipaper_access_key)
88
+ @uploader.ipaper_access_key
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'cover_me'
4
+ require File.join(File.dirname(__FILE__), '../lib/scribd-carrierwave.rb')
5
+ require 'mocha'
6
+
7
+
8
+ RSpec.configure do |config|
9
+ config.mock_with :mocha
10
+ end
11
+
12
+ CoverMe.config do |c|
13
+ c.project.root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
14
+ c.file_pattern = [
15
+ /(#{c.project.root}.+\.rb)/i
16
+ ]
17
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: scribd-carrierwave
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Aubrey Rhodes
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-11-21 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &70289866948420 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70289866948420
25
+ - !ruby/object:Gem::Dependency
26
+ name: mocha
27
+ requirement: &70289866947900 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70289866947900
36
+ - !ruby/object:Gem::Dependency
37
+ name: cover_me
38
+ requirement: &70289866947440 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70289866947440
47
+ - !ruby/object:Gem::Dependency
48
+ name: rscribd
49
+ requirement: &70289866947000 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70289866947000
58
+ - !ruby/object:Gem::Dependency
59
+ name: carrierwave
60
+ requirement: &70289866946400 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70289866946400
69
+ - !ruby/object:Gem::Dependency
70
+ name: configatron
71
+ requirement: &70289866945880 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *70289866945880
80
+ description: Allows you to have a CarrierWave uploader automatically upload to scribd
81
+ email:
82
+ - aubrey.c.rhodes@gmail.com
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - .gitignore
88
+ - Gemfile
89
+ - Rakefile
90
+ - lib/scribd-carrierwave.rb
91
+ - lib/scribd-carrierwave/config.rb
92
+ - lib/scribd-carrierwave/version.rb
93
+ - scribd-carrierwave.gemspec
94
+ - spec/scribd-carrierwave_spec.rb
95
+ - spec/spec_helper.rb
96
+ homepage: ''
97
+ licenses: []
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ segments:
109
+ - 0
110
+ hash: 1021797109063755635
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ segments:
118
+ - 0
119
+ hash: 1021797109063755635
120
+ requirements: []
121
+ rubyforge_project: scribd-carrierwave
122
+ rubygems_version: 1.8.10
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: Integration for rscirbd and carrierwave
126
+ test_files:
127
+ - spec/scribd-carrierwave_spec.rb
128
+ - spec/spec_helper.rb