hydra-core 6.4.0 → 6.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f3786d515271e29c2bcf01e9be0e267986c99a0
4
- data.tar.gz: 2d3301d339b4de9f69e90f66e8e546501776814a
3
+ metadata.gz: 27d360e48d308028e629a192bff49030c4531963
4
+ data.tar.gz: 2792914261dbf079ce249d0ee442cb6dd2a5c1e8
5
5
  SHA512:
6
- metadata.gz: 97389da6bd0a5e3717a3799ae551943c8fb0cc914f0fc5308cdba8e8e4515be58f222a66e47387a47621d4280770f57bc65da236d2933f41dd6a364813d65d53
7
- data.tar.gz: 2453360ba72924d2e9aab977cd81c89d35944c9a5c47dc41e4af0231dba8db99b5d265e121f87e3ef92fae6bf04c72660ada3589debbae279521f5e51cae289c
6
+ metadata.gz: fdd6ca02a1bf8203154ab9a8e43316dcb5adcfb85c92a82cc4b8b29a6acd4b4d4cccaf8cc99a43e42d2956ede4e4dbf45ca7a526dccc4ddbef9f419783c3b72e
7
+ data.tar.gz: 2dd1d1e4d4d03ada5a302047dfe1e37ee401ed986493fd5b0092b5351e9923907f2e5f83e0c4291b505d10b21065930c1dae97305215b9002c628de6278c1a3d
@@ -11,8 +11,12 @@ module Hydra
11
11
  # Responds to http requests to show the datastream
12
12
  def show
13
13
  if can_download?
14
- # we can now examine asset and determine if we should send_content, or some other action.
15
- send_content (asset)
14
+ if datastream.new?
15
+ render_404
16
+ else
17
+ # we can now examine asset and determine if we should send_content, or some other action.
18
+ send_content (asset)
19
+ end
16
20
  else
17
21
  logger.info "Can not read #{params[asset_param_key]}"
18
22
  raise Hydra::AccessDenied.new("You do not have sufficient access privileges to read this document, which has been marked private.", :read, params[asset_param_key])
@@ -21,6 +25,13 @@ module Hydra
21
25
 
22
26
  protected
23
27
 
28
+ def render_404
29
+ respond_to do |format|
30
+ format.html { render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found }
31
+ format.any { head :not_found }
32
+ end
33
+ end
34
+
24
35
  # Override this method if asset PID is not passed in params[:id],
25
36
  # for example, in a nested resource.
26
37
  def asset_param_key
@@ -55,7 +66,7 @@ module Hydra
55
66
  # Loads the datastream specified by the HTTP parameter `:datastream_id`.
56
67
  # If this object does not have a datastream by that name, return the default datastream
57
68
  # as returned by {#default_content_ds}
58
- # @return [ActiveFedora::Datastream] the datastr
69
+ # @return [ActiveFedora::Datastream] the datastream
59
70
  def datastream_to_show
60
71
  ds = asset.datastreams[params[:datastream_id]] if params.has_key?(:datastream_id)
61
72
  ds = default_content_ds if ds.nil?
@@ -1,4 +1,4 @@
1
1
  module HydraHead
2
- VERSION = "6.4.0"
2
+ VERSION = "6.4.1"
3
3
  end
4
4
 
@@ -15,9 +15,12 @@ describe DownloadsController do
15
15
 
16
16
  describe "with a file" do
17
17
  before do
18
+ class ContentHolder < ActiveFedora::Base
19
+ include Hydra::AccessControls::Permissions
20
+ has_file_datastream 'thumbnail'
21
+ end
18
22
  @user = User.new.tap {|u| u.email = 'email@example.com'; u.password = 'password'; u.save}
19
- @obj = ActiveFedora::Base.new
20
- @obj = ModsAsset.new
23
+ @obj = ContentHolder.new
21
24
  @obj.label = "world.png"
22
25
  @obj.add_file_datastream('fizz', :dsid=>'buzz', :mimeType => 'image/png')
23
26
  @obj.add_file_datastream('foobarfoobarfoobar', :dsid=>'content', :mimeType => 'image/png')
@@ -27,6 +30,7 @@ describe DownloadsController do
27
30
  end
28
31
  after do
29
32
  @obj.destroy
33
+ Object.send(:remove_const, :ContentHolder)
30
34
  end
31
35
  describe "when logged in as reader" do
32
36
  before do
@@ -35,7 +39,7 @@ describe DownloadsController do
35
39
  end
36
40
  describe "show" do
37
41
  it "should default to returning default download configured by object" do
38
- ModsAsset.stub(:default_content_ds).and_return('buzz')
42
+ ContentHolder.stub(:default_content_ds).and_return('buzz')
39
43
  get "show", :id => @obj.pid
40
44
  response.should be_success
41
45
  response.headers['Content-Type'].should == "image/png"
@@ -50,12 +54,23 @@ describe DownloadsController do
50
54
  response.headers["Content-Disposition"].should == "inline; filename=\"world.png\""
51
55
  response.body.should == 'foobarfoobarfoobar'
52
56
  end
53
- it "should return requested datastreams" do
54
- get "show", :id => @obj.pid, :datastream_id => "descMetadata"
55
- response.should be_success
56
- response.headers['Content-Type'].should == "text/plain"
57
- response.headers["Content-Disposition"].should == "inline; filename=\"world.png\""
58
- response.body.should == "It's a stream"
57
+
58
+ context "when a specific datastream is requested" do
59
+ context "and it doesn't exist" do
60
+ it "should return :not_found when the datastream doesn't exist" do
61
+ get "show", :id => @obj.pid, :datastream_id => "thumbnail"
62
+ response.should be_not_found
63
+ end
64
+ end
65
+ context "and it exists" do
66
+ it "should return it" do
67
+ get "show", :id => @obj.pid, :datastream_id => "descMetadata"
68
+ response.should be_success
69
+ response.headers['Content-Type'].should == "text/plain"
70
+ response.headers["Content-Disposition"].should == "inline; filename=\"world.png\""
71
+ response.body.should == "It's a stream"
72
+ end
73
+ end
59
74
  end
60
75
  it "should support setting disposition to inline" do
61
76
  get "show", :id => @obj.pid, :disposition => "inline"
@@ -83,6 +98,7 @@ describe DownloadsController do
83
98
  stub_ds.stub(:mimeType).and_return('video/webm')
84
99
  stub_ds.stub(:dsSize).and_return(16)
85
100
  stub_ds.stub(:dsid).and_return('webm')
101
+ stub_ds.stub(:new?).and_return(false)
86
102
  stub_ds.stub(:pid).and_return('changeme:test')
87
103
  stub_file = double('stub object', datastreams: {'webm' => stub_ds}, pid:'changeme:test', label: "MyVideo.webm")
88
104
  ActiveFedora::Base.should_receive(:load_instance_from_solr).with('changeme:test').and_return(stub_file)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.4.0
4
+ version: 6.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zumwalt, Bess Sadler, Julie Meloni, Naomi Dushay, Jessie Keck, John Scofield,
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-17 00:00:00.000000000 Z
12
+ date: 2013-11-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -93,14 +93,14 @@ dependencies:
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 6.4.0
96
+ version: 6.4.1
97
97
  type: :runtime
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 6.4.0
103
+ version: 6.4.1
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: jettywrapper
106
106
  requirement: !ruby/object:Gem::Requirement
@@ -280,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
280
  version: '0'
281
281
  requirements: []
282
282
  rubyforge_project:
283
- rubygems_version: 2.1.7
283
+ rubygems_version: 2.0.3
284
284
  signing_key:
285
285
  specification_version: 4
286
286
  summary: Hydra-Head Rails Engine (requires Rails3)