sufia 3.4.0 → 3.5.0
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/.travis.yml +6 -1
- data/Gemfile +7 -8
- data/README.md +13 -0
- data/SUFIA_VERSION +1 -1
- data/app/controllers/mailbox_controller.rb +8 -8
- data/app/jobs/ingest_local_file_job.rb +17 -13
- data/app/views/catalog/_home_text.html.erb +0 -3
- data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +5 -29
- data/app/views/mailbox/index.html.erb +9 -21
- data/app/views/users/_notify_link.html.erb +2 -17
- data/config/routes.rb +5 -3
- data/lib/sufia/files_controller_behavior.rb +45 -50
- data/lib/sufia/version.rb +1 -1
- data/lib/sufia/virus_found_error.rb +4 -0
- data/spec/controllers/generic_files_controller_spec.rb +14 -79
- data/spec/controllers/mailbox_controller_spec.rb +9 -13
- data/spec/features/users_spec.rb +0 -3
- data/spec/fixtures/sample_mpeg4.mp4 +0 -0
- data/spec/jobs/import_url_job_spec.rb +8 -8
- data/spec/jobs/ingest_local_file_job_spec.rb +13 -10
- data/spec/models/fits_datastream_spec.rb +72 -21
- data/spec/models/generic_file/actions_spec.rb +2 -17
- data/spec/models/generic_file/web_form_spec.rb +4 -3
- data/spec/models/generic_file_spec.rb +27 -0
- data/spec/routing/route_spec.rb +15 -20
- data/spec/spec_helper.rb +15 -2
- data/sufia-models/app/models/datastreams/fits_datastream.rb +10 -1
- data/sufia-models/lib/generators/sufia/models/install_generator.rb +1 -1
- data/sufia-models/lib/sufia/models/generic_file.rb +3 -0
- data/sufia-models/lib/sufia/models/generic_file/actions.rb +8 -11
- data/sufia-models/lib/sufia/models/generic_file/characterization.rb +19 -4
- data/sufia-models/lib/sufia/models/generic_file/virus_check.rb +33 -0
- data/sufia-models/lib/sufia/models/generic_file/web_form.rb +2 -3
- data/sufia-models/lib/sufia/models/jobs/import_url_job.rb +29 -31
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/sufia.gemspec +1 -1
- data/tasks/sufia-dev.rake +2 -1
- metadata +10 -10
- data/app/assets/images/rails.png +0 -0
- data/app/assets/images/site_images/temp/guitar.jpg +0 -0
- data/app/assets/images/splashscreen.png +0 -0
- data/app/assets/images/video-still.png +0 -0
@@ -13,9 +13,10 @@ describe GenericFile do
|
|
13
13
|
end
|
14
14
|
describe "terms_for_display" do
|
15
15
|
it "should return a list" do
|
16
|
-
subject.terms_for_display.
|
17
|
-
:
|
18
|
-
:
|
16
|
+
expect(subject.terms_for_display).to eq([:resource_type, :title,
|
17
|
+
:creator, :contributor, :description, :tag, :rights, :publisher,
|
18
|
+
:date_created, :date_uploaded, :date_modified, :subject, :language,
|
19
|
+
:identifier, :based_near, :related_url])
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
@@ -4,6 +4,7 @@ describe GenericFile do
|
|
4
4
|
before do
|
5
5
|
subject.apply_depositor_metadata('jcoyne')
|
6
6
|
@file = subject #TODO remove this line someday (use subject instead)
|
7
|
+
|
7
8
|
end
|
8
9
|
|
9
10
|
describe '#to_s' do
|
@@ -1035,4 +1036,30 @@ describe GenericFile do
|
|
1035
1036
|
end
|
1036
1037
|
end
|
1037
1038
|
end
|
1039
|
+
describe "file content validation" do
|
1040
|
+
before do
|
1041
|
+
GenericFile.any_instance.stub(:create_derivatives)
|
1042
|
+
end
|
1043
|
+
context "when file contains a virus" do
|
1044
|
+
let(:f) { File.new(fixture_path + '/small_file.txt') }
|
1045
|
+
after(:each) do
|
1046
|
+
subject.destroy if subject.persisted?
|
1047
|
+
end
|
1048
|
+
it "populates the errors hash during validation" do
|
1049
|
+
allow(Sufia::GenericFile::Actions).to receive(:virus_check).and_raise(Sufia::VirusFoundError, "A virus was found in #{f.path}: EL CRAPO VIRUS")
|
1050
|
+
subject.add_file(f, 'content', 'small_file.txt')
|
1051
|
+
subject.save
|
1052
|
+
subject.should_not be_persisted
|
1053
|
+
subject.errors.messages.should == { content: ["A virus was found in #{f.path}: EL CRAPO VIRUS"] }
|
1054
|
+
end
|
1055
|
+
it "does not save a new version of a GenericFile" do
|
1056
|
+
subject.add_file(f, 'content', 'small_file.txt')
|
1057
|
+
subject.save
|
1058
|
+
allow(Sufia::GenericFile::Actions).to receive(:virus_check).and_raise(Sufia::VirusFoundError)
|
1059
|
+
subject.add_file(File.new(fixture_path + '/sufia_generic_stub.txt') , 'content', 'sufia_generic_stub.txt')
|
1060
|
+
subject.save
|
1061
|
+
subject.reload.content.content.should == "small\n"
|
1062
|
+
end
|
1063
|
+
end
|
1064
|
+
end
|
1038
1065
|
end
|
data/spec/routing/route_spec.rb
CHANGED
@@ -139,6 +139,21 @@ describe 'Routes' do
|
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
142
|
+
describe "Notifications" do
|
143
|
+
it "should have index" do
|
144
|
+
expect( get: '/notifications').to route_to(controller: 'mailbox', action: 'index')
|
145
|
+
expect(notifications_path).to eq '/notifications'
|
146
|
+
end
|
147
|
+
it "should allow deleting" do
|
148
|
+
expect( delete: '/notifications/123').to route_to(controller: 'mailbox', action: 'destroy', id: '123')
|
149
|
+
expect(notification_path(123)).to eq '/notifications/123'
|
150
|
+
end
|
151
|
+
it "should allow deleting all of them" do
|
152
|
+
expect( delete: '/notifications/delete_all').to route_to(controller: 'mailbox', action: 'delete_all')
|
153
|
+
expect(delete_all_notifications_path).to eq '/notifications/delete_all'
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
142
157
|
describe "Contact Form" do
|
143
158
|
it "should route to new" do
|
144
159
|
{ get: '/contact' }.should route_to(controller: 'contact_form', action: 'new')
|
@@ -149,26 +164,6 @@ describe 'Routes' do
|
|
149
164
|
end
|
150
165
|
end
|
151
166
|
|
152
|
-
describe "Queues" do
|
153
|
-
# TODO: figure out how to test mounted routes in Rails 3.2
|
154
|
-
# before do
|
155
|
-
# @routes = Resque::Server.routes
|
156
|
-
# warden_mock = mock('warden')
|
157
|
-
# warden_mock.stub(:user).returns(FactoryGirl.find_or_create(:archivist))
|
158
|
-
# ActionDispatch::Request.any_instance.stub(:env).returns({'warden': warden_mock})
|
159
|
-
# end
|
160
|
-
|
161
|
-
it "should route to queues if group is set properly" #do
|
162
|
-
# User.any_instance.stub(:groups).returns(['umg/up.dlt.scholarsphere-admin'])
|
163
|
-
# { get: '/admin/queues' }.should route_to('resque/server#index')
|
164
|
-
# end
|
165
|
-
|
166
|
-
it "should *not* route to queues if group is not set properly" #do
|
167
|
-
# User.any_instance.stub(:groups).returns(['something'])
|
168
|
-
# { get: '/admin/queues' }.should_not route_to('resque/server#index')
|
169
|
-
# end
|
170
|
-
end
|
171
|
-
|
172
167
|
describe "Static Pages" do
|
173
168
|
it "should route to about" do
|
174
169
|
{ get: '/about' }.should route_to(controller: 'static', action: 'about')
|
data/spec/spec_helper.rb
CHANGED
@@ -36,6 +36,20 @@ if $in_travis
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
if defined?(ClamAV)
|
40
|
+
ClamAV.instance.loaddb
|
41
|
+
else
|
42
|
+
class ClamAV
|
43
|
+
include Singleton
|
44
|
+
def scanfile(f)
|
45
|
+
0
|
46
|
+
end
|
47
|
+
def loaddb
|
48
|
+
nil
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
39
53
|
Resque.inline = Rails.env.test?
|
40
54
|
|
41
55
|
FactoryGirl.definition_file_paths = [File.expand_path("../factories", __FILE__)]
|
@@ -65,10 +79,9 @@ RSpec.configure do |config|
|
|
65
79
|
config.include EngineRoutes, :type => :controller
|
66
80
|
end
|
67
81
|
|
68
|
-
|
69
82
|
module FactoryGirl
|
70
83
|
def self.find_or_create(handle, by=:email)
|
71
84
|
tmpl = FactoryGirl.build(handle)
|
72
85
|
tmpl.class.send("find_by_#{by}".to_sym, tmpl.send(by)) || FactoryGirl.create(handle)
|
73
86
|
end
|
74
|
-
end
|
87
|
+
end
|
@@ -70,7 +70,11 @@ class FitsDatastream < ActiveFedora::OmDatastream
|
|
70
70
|
t.offset(:path=>"offset")
|
71
71
|
}
|
72
72
|
t.video {
|
73
|
-
|
73
|
+
t.width(:path=>"imageWidth")
|
74
|
+
t.height(:path=>"imageHeight")
|
75
|
+
t.duration(:path=>"duration")
|
76
|
+
t.sample_rate(:path=>"sampleRate")
|
77
|
+
t.frame_rate(:path=>"frameRate")
|
74
78
|
}
|
75
79
|
}
|
76
80
|
t.format_label(:proxy=>[:identification, :identity, :format_label])
|
@@ -98,7 +102,9 @@ class FitsDatastream < ActiveFedora::OmDatastream
|
|
98
102
|
t.byte_order(:proxy=>[:metadata, :image, :byte_order])
|
99
103
|
t.compression(:proxy=>[:metadata, :image, :compression])
|
100
104
|
t.width(:proxy=>[:metadata, :image, :width])
|
105
|
+
t.video_width( :proxy=>[:metadata, :video, :width])
|
101
106
|
t.height(:proxy=>[:metadata, :image, :height])
|
107
|
+
t.video_height(:proxy=>[:metadata, :video, :height])
|
102
108
|
t.color_space(:proxy=>[:metadata, :image, :color_space])
|
103
109
|
t.profile_name(:proxy=>[:metadata, :image, :profile_name])
|
104
110
|
t.profile_version(:proxy=>[:metadata, :image, :profile_version])
|
@@ -115,11 +121,14 @@ class FitsDatastream < ActiveFedora::OmDatastream
|
|
115
121
|
t.markup_basis(:proxy=>[:metadata, :text, :markup_basis])
|
116
122
|
t.markup_language(:proxy=>[:metadata, :text, :markup_language])
|
117
123
|
t.duration(:proxy=>[:metadata, :audio, :duration])
|
124
|
+
t.video_duration(:proxy=>[:metadata, :video, :duration])
|
118
125
|
t.bit_depth(:proxy=>[:metadata, :audio, :bit_depth])
|
119
126
|
t.sample_rate(:proxy=>[:metadata, :audio, :sample_rate])
|
127
|
+
t.video_sample_rate(:proxy=>[:metadata, :video, :sample_rate])
|
120
128
|
t.channels(:proxy=>[:metadata, :audio, :channels])
|
121
129
|
t.data_format(:proxy=>[:metadata, :audio, :data_format])
|
122
130
|
t.offset(:proxy=>[:metadata, :audio, :offset])
|
131
|
+
t.frame_rate(:proxy=>[:metadata, :video, :frame_rate])
|
123
132
|
end
|
124
133
|
|
125
134
|
def self.xml_template
|
@@ -55,7 +55,7 @@ This generator makes the following changes to your application:
|
|
55
55
|
def inject_sufia_user_behavior
|
56
56
|
file_path = "app/models/#{model_name.underscore}.rb"
|
57
57
|
if File.exists?(file_path)
|
58
|
-
|
58
|
+
inject_into_file file_path, after: /include Hydra\:\:User.*$/ do
|
59
59
|
"# Connects this user object to Sufia behaviors. " +
|
60
60
|
"\n include Sufia::User\n"
|
61
61
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'sufia/virus_found_error'
|
1
2
|
module Sufia
|
2
3
|
module GenericFile
|
3
4
|
extend ActiveSupport::Concern
|
@@ -9,6 +10,7 @@ module Sufia
|
|
9
10
|
autoload :Trophies, 'sufia/models/generic_file/trophies'
|
10
11
|
autoload :Metadata, 'sufia/models/generic_file/metadata'
|
11
12
|
autoload :Versions, 'sufia/models/generic_file/versions'
|
13
|
+
autoload :VirusCheck, 'sufia/models/generic_file/virus_check'
|
12
14
|
include Sufia::ModelMethods
|
13
15
|
include Sufia::Noid
|
14
16
|
include Sufia::GenericFile::MimeTypes
|
@@ -22,6 +24,7 @@ module Sufia
|
|
22
24
|
include Sufia::GenericFile::Trophies
|
23
25
|
include Sufia::GenericFile::Metadata
|
24
26
|
include Sufia::GenericFile::Versions
|
27
|
+
include Sufia::GenericFile::VirusCheck
|
25
28
|
|
26
29
|
included do
|
27
30
|
belongs_to :batch, :property => :is_part_of
|
@@ -2,7 +2,6 @@ module Sufia::GenericFile
|
|
2
2
|
# Actions are decoupled from controller logic so that they may be called from a controller or a background job.
|
3
3
|
module Actions
|
4
4
|
def self.create_metadata(generic_file, user, batch_id)
|
5
|
-
|
6
5
|
generic_file.apply_depositor_metadata(user)
|
7
6
|
generic_file.date_uploaded = Date.today
|
8
7
|
generic_file.date_modified = Date.today
|
@@ -16,7 +15,7 @@ module Sufia::GenericFile
|
|
16
15
|
yield(generic_file) if block_given?
|
17
16
|
generic_file.save!
|
18
17
|
end
|
19
|
-
|
18
|
+
|
20
19
|
def self.create_content(generic_file, file, file_name, dsid, user)
|
21
20
|
generic_file.add_file(file, dsid, file_name)
|
22
21
|
|
@@ -40,15 +39,13 @@ module Sufia::GenericFile
|
|
40
39
|
end
|
41
40
|
|
42
41
|
def self.virus_check(file)
|
43
|
-
|
44
|
-
|
45
|
-
logger.warn "Virus checking
|
46
|
-
|
47
|
-
else
|
48
|
-
logger.warn "Virus checking disabled for #{file.inspect}"
|
49
|
-
0
|
42
|
+
path = file.is_a?(String) ? file : file.path
|
43
|
+
unless defined?(ClamAV)
|
44
|
+
logger.warn "Virus checking disabled, #{path} not checked"
|
45
|
+
return
|
50
46
|
end
|
51
|
-
|
52
|
-
|
47
|
+
scan_result = ClamAV.instance.scanfile(path)
|
48
|
+
raise Sufia::VirusFoundError.new("A virus was found in #{path}: #{scan_result}") unless scan_result == 0
|
49
|
+
end
|
53
50
|
end
|
54
51
|
end
|
@@ -13,21 +13,36 @@ module Sufia
|
|
13
13
|
:file_language, :word_count, :character_count,
|
14
14
|
:paragraph_count, :line_count, :table_count,
|
15
15
|
:graphics_count, :byte_order, :compression,
|
16
|
-
:
|
16
|
+
:color_space, :profile_name,
|
17
17
|
:profile_version, :orientation, :color_map,
|
18
18
|
:image_producer, :capture_device,
|
19
19
|
:scanning_software, :exif_version,
|
20
20
|
:gps_timestamp, :latitude, :longitude,
|
21
21
|
:character_set, :markup_basis,
|
22
|
-
:markup_language, :
|
23
|
-
:
|
22
|
+
:markup_language, :bit_depth,
|
23
|
+
:channels, :data_format, :offset, :frame_rate, datastream: :characterization, multiple: true
|
24
24
|
|
25
25
|
end
|
26
26
|
|
27
|
+
def width
|
28
|
+
characterization.width.blank? ? characterization.video_width : characterization.width
|
29
|
+
end
|
30
|
+
|
31
|
+
def height
|
32
|
+
characterization.height.blank? ? characterization.video_height : characterization.height
|
33
|
+
end
|
34
|
+
|
35
|
+
def duration
|
36
|
+
characterization.duration.blank? ? characterization.video_duration : characterization.duration
|
37
|
+
end
|
38
|
+
|
39
|
+
def sample_rate
|
40
|
+
characterization.sample_rate.blank? ? characterization.video_sample_rate : characterization.sample_rate
|
41
|
+
end
|
42
|
+
|
27
43
|
def characterize_if_changed
|
28
44
|
content_changed = self.content.changed?
|
29
45
|
yield
|
30
|
-
#logger.debug "DOING CHARACTERIZE ON #{self.pid}"
|
31
46
|
Sufia.queue.push(CharacterizeJob.new(self.pid)) if content_changed
|
32
47
|
end
|
33
48
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Sufia
|
2
|
+
module GenericFile
|
3
|
+
module VirusCheck
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
validate :detect_viruses
|
8
|
+
end
|
9
|
+
|
10
|
+
# Default behavior is to raise a validation error and halt the save if a virus is found
|
11
|
+
def detect_viruses
|
12
|
+
return unless content.changed?
|
13
|
+
path = if content.content.respond_to?(:path)
|
14
|
+
content.content.path
|
15
|
+
else
|
16
|
+
Tempfile.open('') do |t|
|
17
|
+
t.binmode
|
18
|
+
t.write(content.content)
|
19
|
+
t.close
|
20
|
+
t.path
|
21
|
+
end
|
22
|
+
end
|
23
|
+
Sufia::GenericFile::Actions.virus_check(path)
|
24
|
+
true
|
25
|
+
rescue Sufia::VirusFoundError => virus
|
26
|
+
logger.warn(virus.message)
|
27
|
+
errors.add(:content, virus.message)
|
28
|
+
false
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -22,14 +22,13 @@ module Sufia
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def terms_for_editing
|
25
|
-
terms_for_display -
|
26
|
-
[:part_of, :date_modified, :date_uploaded, :format] #, :resource_type]
|
25
|
+
terms_for_display - [:date_modified, :date_uploaded, :format]
|
27
26
|
end
|
28
27
|
|
29
28
|
def terms_for_display
|
30
29
|
# 'type' is the RDF.type assertion, which is not present by default, but may be
|
31
30
|
# provided in some RDF schemas
|
32
|
-
self.descMetadata.class.fields
|
31
|
+
self.descMetadata.class.fields - [:part_of]
|
33
32
|
end
|
34
33
|
|
35
34
|
def to_jq_upload
|
@@ -9,40 +9,38 @@ class ImportUrlJob < ActiveFedoraPidBasedJob
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def run
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
12
|
+
user = User.find_by_user_key(generic_file.depositor)
|
13
|
+
|
14
|
+
Tempfile.open(self.pid) do |f|
|
15
|
+
f.binmode
|
16
|
+
|
17
|
+
# download file from url
|
18
|
+
uri = URI(generic_file.import_url)
|
19
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
20
|
+
http.use_ssl = uri.scheme == "https" # enable SSL/TLS
|
21
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
22
|
+
|
23
|
+
http.start do
|
24
|
+
http.request_get(uri.request_uri) do |resp|
|
25
|
+
resp.read_body do |segment|
|
26
|
+
f.write(segment)
|
27
|
+
end
|
25
28
|
end
|
26
29
|
end
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
|
31
|
+
f.rewind
|
32
|
+
# attach downloaded file to generic file stubbed out
|
33
|
+
Sufia::GenericFile::Actions.create_content(generic_file, f, File.basename(uri.path), 'content', user)
|
34
|
+
Sufia.queue.push(ContentDepositEventJob.new(generic_file.pid, generic_file.depositor))
|
35
|
+
# add message to user for downloaded file
|
36
|
+
message = "The file (#{File.basename(uri.path)}) was successfully imported."
|
37
|
+
job_user.send_message(user, message, 'File Import')
|
35
38
|
end
|
39
|
+
rescue => error
|
40
|
+
job_user.send_message(user, error.message, 'File Import Error')
|
41
|
+
end
|
36
42
|
|
37
|
-
|
38
|
-
|
39
|
-
Sufia::GenericFile::Actions.create_content(generic_file, f, File.basename(uri.path), 'content', user)
|
40
|
-
# add message to user for downloaded file
|
41
|
-
message = "The file (#{File.basename(uri.path)}) was successfully imported."
|
42
|
-
job_user.send_message(user, message, 'File Import')
|
43
|
-
|
44
|
-
ensure
|
45
|
-
f.close
|
46
|
-
f.unlink
|
43
|
+
def job_user
|
44
|
+
User.batchuser
|
47
45
|
end
|
48
46
|
end
|
data/sufia.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.email = ["justin.coyne@yourmediashelf.com"]
|
8
8
|
gem.description = %q{Sufia is a Rails engine for creating a self-deposit institutional repository}
|
9
9
|
gem.summary = %q{Sufia was extracted from ScholarSphere developed by Penn State University}
|
10
|
-
gem.homepage = ""
|
10
|
+
gem.homepage = "http://github.com/projecthydra/sufia"
|
11
11
|
|
12
12
|
gem.files = `git ls-files`.split($\)
|
13
13
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/tasks/sufia-dev.rake
CHANGED
@@ -26,7 +26,7 @@ end
|
|
26
26
|
desc "Run specs"
|
27
27
|
RSpec::Core::RakeTask.new(:rspec) do |t|
|
28
28
|
t.pattern = '../**/*_spec.rb'
|
29
|
-
t.rspec_opts = ["--colour -I ../", '--backtrace']
|
29
|
+
t.rspec_opts = ["--colour -I ../", '--backtrace', '--profile 20']
|
30
30
|
end
|
31
31
|
|
32
32
|
desc "Load fixtures"
|
@@ -48,6 +48,7 @@ task :generate do
|
|
48
48
|
puts "Updating gemfile"
|
49
49
|
|
50
50
|
`echo "gem 'sufia', :path=>'../../../sufia'
|
51
|
+
gem 'clamav'
|
51
52
|
gem 'capybara'
|
52
53
|
gem 'factory_girl_rails'
|
53
54
|
gem 'kaminari', github: 'harai/kaminari', branch: 'route_prefix_prototype'" >> spec/internal/Gemfile`
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sufia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sufia-models
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.
|
19
|
+
version: 3.5.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: 3.
|
26
|
+
version: 3.5.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: blacklight_advanced_search
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -183,7 +183,6 @@ files:
|
|
183
183
|
- app/assets/images/missing_original.png
|
184
184
|
- app/assets/images/missing_thumb.png
|
185
185
|
- app/assets/images/progressbar.gif
|
186
|
-
- app/assets/images/rails.png
|
187
186
|
- app/assets/images/site_images/bg_body.png
|
188
187
|
- app/assets/images/site_images/bg_breadcrumbs.png
|
189
188
|
- app/assets/images/site_images/bg_button1.png
|
@@ -204,8 +203,6 @@ files:
|
|
204
203
|
- app/assets/images/site_images/icon_arrow_down.png
|
205
204
|
- app/assets/images/site_images/icons_sprite.png
|
206
205
|
- app/assets/images/site_images/logo_psuss_footer.png
|
207
|
-
- app/assets/images/site_images/temp/guitar.jpg
|
208
|
-
- app/assets/images/splashscreen.png
|
209
206
|
- app/assets/images/ui-anim_basic_16x16.gif
|
210
207
|
- app/assets/images/ui-bg_diagonals-thick_18_b81900_40x40.png
|
211
208
|
- app/assets/images/ui-bg_diagonals-thick_20_666666_40x40.png
|
@@ -222,7 +219,6 @@ files:
|
|
222
219
|
- app/assets/images/ui-icons_2e4f81_256x240.png
|
223
220
|
- app/assets/images/ui-icons_ffd27a_256x240.png
|
224
221
|
- app/assets/images/ui-icons_ffffff_256x240.png
|
225
|
-
- app/assets/images/video-still.png
|
226
222
|
- app/assets/javascripts/contact_form.js
|
227
223
|
- app/assets/javascripts/sufia.js
|
228
224
|
- app/assets/javascripts/sufia/batch_select_all.js
|
@@ -483,6 +479,7 @@ files:
|
|
483
479
|
- lib/sufia/role_mapper.rb
|
484
480
|
- lib/sufia/single_use_error.rb
|
485
481
|
- lib/sufia/version.rb
|
482
|
+
- lib/sufia/virus_found_error.rb
|
486
483
|
- lib/tasks/fixtures.rake
|
487
484
|
- public/.gitkeep
|
488
485
|
- public/favicon.ico
|
@@ -532,6 +529,7 @@ files:
|
|
532
529
|
- spec/fixtures/pdf_fits.xml
|
533
530
|
- spec/fixtures/piano_note.wav
|
534
531
|
- spec/fixtures/png_fits.xml
|
532
|
+
- spec/fixtures/sample_mpeg4.mp4
|
535
533
|
- spec/fixtures/small_file.txt
|
536
534
|
- spec/fixtures/sufia/.gitignore
|
537
535
|
- spec/fixtures/sufia/bg_header.jpg
|
@@ -665,6 +663,7 @@ files:
|
|
665
663
|
- sufia-models/lib/sufia/models/generic_file/thumbnail.rb
|
666
664
|
- sufia-models/lib/sufia/models/generic_file/trophies.rb
|
667
665
|
- sufia-models/lib/sufia/models/generic_file/versions.rb
|
666
|
+
- sufia-models/lib/sufia/models/generic_file/virus_check.rb
|
668
667
|
- sufia-models/lib/sufia/models/generic_file/web_form.rb
|
669
668
|
- sufia-models/lib/sufia/models/id_service.rb
|
670
669
|
- sufia-models/lib/sufia/models/jobs/active_fedora_pid_based_job.rb
|
@@ -721,7 +720,7 @@ files:
|
|
721
720
|
- vendor/assets/javascripts/swfobject.js
|
722
721
|
- vendor/assets/javascripts/video.js
|
723
722
|
- vendor/plugins/.gitkeep
|
724
|
-
homepage:
|
723
|
+
homepage: http://github.com/projecthydra/sufia
|
725
724
|
licenses:
|
726
725
|
- APACHE2
|
727
726
|
metadata: {}
|
@@ -741,7 +740,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
741
740
|
version: '0'
|
742
741
|
requirements: []
|
743
742
|
rubyforge_project:
|
744
|
-
rubygems_version: 2.0.
|
743
|
+
rubygems_version: 2.0.14
|
745
744
|
signing_key:
|
746
745
|
specification_version: 4
|
747
746
|
summary: Sufia was extracted from ScholarSphere developed by Penn State University
|
@@ -789,6 +788,7 @@ test_files:
|
|
789
788
|
- spec/fixtures/pdf_fits.xml
|
790
789
|
- spec/fixtures/piano_note.wav
|
791
790
|
- spec/fixtures/png_fits.xml
|
791
|
+
- spec/fixtures/sample_mpeg4.mp4
|
792
792
|
- spec/fixtures/small_file.txt
|
793
793
|
- spec/fixtures/sufia/.gitignore
|
794
794
|
- spec/fixtures/sufia/bg_header.jpg
|