riiif 0.0.9 → 0.0.10

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: f5e8d0c868b034e0955aef6e76fe8e6b0944787a
4
- data.tar.gz: 5e8e67c40d3804bd7d3852b10f1347493d110c5f
3
+ metadata.gz: 201037b36eb8a0a7b31f6953ecaf4dbc980df9d4
4
+ data.tar.gz: 0eee522bedbd6e2653ef13621267dd23aeeacea0
5
5
  SHA512:
6
- metadata.gz: b0f9f42f5a19abc877adba948c55b6e02ff5b03452d128df252823f65ac6c179e24e16885c9699550b4a86d09d5ddbed5463fc9b74ccccede4ea34d8adb49749
7
- data.tar.gz: bb323cfe3324c38f2ebaffc0eec65044fd60c6fdd1cee9a0a3835f900ebec960f60402d770479ac716c8fdbfe254e556a3a2953d3cce6b4d3b94a342eee44ee1
6
+ metadata.gz: 0789760ccc3002354ad44cd5ca29547417d6375085dc7bb27600852b88df2aed746fbcd1e436f6b74958d09a722575e9deb8afea39f36542c7ffef802b970c38
7
+ data.tar.gz: dd653f25e076dc6ac8a3207132fd2652cf389158a74b2d6617e3c300ec1478f951c85f787752f9e93a29eb7dc718486129d42876118b8b73616f272f1b2b0e6e
data/README.md CHANGED
@@ -5,6 +5,18 @@ A Ruby IIIF image server as a rails engine
5
5
 
6
6
  ## Installation
7
7
 
8
+ RIIIF depends on Imagemagick so you must install that first. On a mac using Homebrew you can follow these instructions:
9
+
10
+ ImageMagick (6.8.8) may be installed with a few options:
11
+ * `--with-ghostscript` Compile with Ghostscript for Postscript/PDF support
12
+ * `--with-tiff` Compile with libtiff support for TIFF files
13
+ * `--with-jp2` Compile with openjpeg2 support for jpeg2000
14
+
15
+ ```bash
16
+ brew install imagemagick --with-ghostscript --with-tiff --with-jp2
17
+ ```
18
+
19
+ ## Install the gem
8
20
  Add this line to your application's Gemfile:
9
21
 
10
22
  gem 'riiif'
@@ -63,6 +75,14 @@ Then you can make requests like this:
63
75
  * http://www.example.org/image-service/abcd1234/full/150,75/0/native.jpg
64
76
  * http://www.example.org/image-service/abcd1234/full/!150,75/0/native.jpg
65
77
 
78
+ ### Route helpers
79
+
80
+ It is prefereable that you use the provided route helpers to build these URIs. Here's an example:
81
+
82
+ ```ruby
83
+ image_tag(Riiif::Engine.routes.url_helpers.image_path(file_id, size: ',600'))
84
+ ```
85
+
66
86
  ### Using a default image
67
87
 
68
88
  If there is a request for an id that doesn't exist, a 404 will be returned. You can optionally return an image with this 404 by setting this in your initializer:
@@ -77,20 +97,56 @@ You can do this to create a default Riiif::Image to use (useful for passing "mis
77
97
  Riiif::Image.new('no_image', Riiif::File.new(Riiif.not_found_image))
78
98
  ```
79
99
 
100
+ ## Integration with Hydra/Fedora
101
+
102
+ Create an initializer like this in `config/initializers/riiif_initializer.rb`
103
+
104
+ ```ruby
105
+ # Tell RIIIF to get files via HTTP (not from the local disk)
106
+ Riiif::Image.file_resolver = Riiif::HTTPFileResolver
107
+
108
+ # This tells RIIIF how to resolve the identifier to a URI in Fedora
109
+ DATASTREAM = 'imageContent'
110
+ Riiif::HTTPFileResolver.id_to_uri = lambda do |id|
111
+ connection = ActiveFedora::Base.connection_for_pid(id)
112
+ host = connection.config[:url]
113
+ path = connection.api.datastream_content_url(id, DATASTREAM, {})
114
+ host + '/' + path
115
+ end
116
+
117
+ # In order to return the info.json endpoint, we have to have the full height and width of
118
+ # each image. If you are using hydra-file_characterization, you have the height & width
119
+ # cached in Solr. The following block directs the info_service to return those values:
120
+ HEIGHT_SOLR_FIELD = 'height_isi'
121
+ WIDTH_SOLR_FIELD = 'width_isi'
122
+ Riiif::Image.info_service = lambda do |id, file|
123
+ resp = get_solr_response_for_doc_id id
124
+ doc = resp.first['response']['docs'].first
125
+ { height: doc[HEIGHT_SOLR_FIELD], width: doc[WIDTH_SOLR_FIELD] }
126
+ end
127
+
128
+ include Blacklight::SolrHelper
129
+ def blacklight_config
130
+ CatalogController.blacklight_config
131
+ end
132
+
133
+ ### ActiveSupport::Benchmarkable (used in Blacklight::SolrHelper) depends on a logger method
134
+
135
+ def logger
136
+ Rails.logger
137
+ end
138
+
139
+
140
+ Riiif::Engine.config.cache_duration_in_days = 30
141
+ ```
142
+
143
+
80
144
  ## Running the tests
81
145
  First, build the engine
82
146
  ```bash
83
147
  rake engine_cart:generate
84
148
  ```
85
149
 
86
- ImageMagick must be installed with jasper support
87
- ```bash
88
- brew install imagemagick --with-jasper # if using Homebrew
89
- ```
90
- It appears that as of imagemagick 6.8.8 you have to use openjpeg2 instead of jasper:
91
- http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=25357#p109912
92
- This doesn't appear to be possible on homebrew until this ticket gets closed: https://github.com/Homebrew/homebrew/issues/28153
93
-
94
150
  Run the tests
95
151
  ```bash
96
152
  rake spec
@@ -1,7 +1,7 @@
1
1
  require 'digest/md5'
2
2
  module Riiif
3
3
  class Image
4
-
4
+
5
5
  class_attribute :file_resolver, :info_service
6
6
  self.file_resolver = FileSystemFileResolver
7
7
 
@@ -18,13 +18,17 @@ module Riiif
18
18
 
19
19
  OUTPUT_FORMATS = %W{jpg png}
20
20
 
21
- attr_reader :id, :image
21
+ attr_reader :id
22
22
 
23
23
  # @param [String] id The identifier of the file to be looked up.
24
24
  # @param [Riiif::File] file Optional: The Riiif::File to use instead of looking one up.
25
25
  def initialize(id, file=nil)
26
26
  @id = id
27
- @image = file.present? ? file : file_resolver.find(id)
27
+ @image = file if file.present?
28
+ end
29
+
30
+ def image
31
+ @image ||= file_resolver.find(id)
28
32
  end
29
33
 
30
34
  def render(args)
data/lib/riiif/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Riiif
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
@@ -31,19 +31,32 @@ describe Riiif::Image do
31
31
  end
32
32
  end
33
33
 
34
- describe "get images from web" do
34
+ context "using HTTPFileResolver" do
35
35
  before do
36
36
  Riiif::Image.file_resolver = Riiif::HTTPFileResolver
37
- Riiif::HTTPFileResolver.id_to_uri = lambda do |id|
37
+ Riiif::HTTPFileResolver.id_to_uri = lambda do |id|
38
38
  "http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/#{id}.jpg/600px-#{id}.jpg"
39
39
  end
40
40
  end
41
41
  after do
42
42
  Riiif::Image.file_resolver = Riiif::FileSystemFileResolver
43
43
  end
44
- subject { Riiif::Image.new('Cave_26,_Ajanta') }
45
- it "should be easy" do
46
- expect(subject.info).to eq height: 390, width:600
44
+
45
+ describe "get info" do
46
+ subject { Riiif::Image.new('Cave_26,_Ajanta') }
47
+ it "should be easy" do
48
+ expect(subject.info).to eq height: 390, width:600
49
+ end
50
+ end
51
+
52
+ context "when the rendered image is in the cache" do
53
+ subject { Riiif::Image.new('Cave_26,_Ajanta') }
54
+ before { allow(Rails.cache).to receive(:fetch).and_return('expected') }
55
+
56
+ it "should not fetch the file" do
57
+ expect(Riiif::Image.file_resolver).not_to receive(:find)
58
+ expect(subject.render(region: 'full', format: 'png')).to eq 'expected'
59
+ end
47
60
  end
48
61
  end
49
62
 
data/spec/spec_helper.rb CHANGED
@@ -4,20 +4,13 @@ ENV["RAILS_ENV"] ||= 'test'
4
4
 
5
5
  EngineCart.load_application!
6
6
  require 'rspec/rails'
7
- require 'rspec/autorun'
8
7
 
9
8
 
10
-
11
- # This file was generated by the `rspec --init` command. Conventionally, all
12
- # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
13
- # Require this file using `require "spec_helper"` to ensure that it is only
14
- # loaded once.
15
- #
16
- # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
9
  RSpec.configure do |config|
18
- config.treat_symbols_as_metadata_keys_with_true_values = true
19
10
  config.run_all_when_everything_filtered = true
20
- config.filter_run :focus
11
+
12
+ config.infer_spec_type_from_file_location!
13
+
21
14
 
22
15
  # Run specs in random order to surface order dependencies. If you find an
23
16
  # order dependency and want to debug it, you can fix the order by providing
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riiif
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-29 00:00:00.000000000 Z
11
+ date: 2015-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler