scribd-carrierwave 0.0.1
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.
- data/.gitignore +7 -0
- data/Gemfile +4 -0
- data/Rakefile +23 -0
- data/lib/scribd-carrierwave.rb +83 -0
- data/lib/scribd-carrierwave/config.rb +8 -0
- data/lib/scribd-carrierwave/version.rb +5 -0
- data/scribd-carrierwave.gemspec +28 -0
- data/spec/scribd-carrierwave_spec.rb +92 -0
- data/spec/spec_helper.rb +17 -0
- metadata +128 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
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,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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|