riiif 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba70ff2bc96642dfaef0a13aa368721e64d819b9
4
- data.tar.gz: f2211f18a7da732e70f6151b907c6cbf66d2a88a
3
+ metadata.gz: 3a1934121b4a1108f275c5a0331519770bb408eb
4
+ data.tar.gz: eb9d3f833d1e77fe46421a754a2d8365eb081102
5
5
  SHA512:
6
- metadata.gz: a593880f25ace996a90457cf99aaba644fc4c4410622e4203f3e968609d598ffd1080b33698e45d9de3b9f63be76b836b89b12a236c49e5bfb9c231e2b8dcaeb
7
- data.tar.gz: b560c0e4f6bb82d44c671f1c32a0ddf24eb6aeac633357aa9e0885886e247a6e987055c629b2ef618499c486f9c1c80d5c285bda00ee972a81a6070e66d1cdc5
6
+ metadata.gz: 848a8082a7768d0011f3e13dedebd36987aebbf5fef0c77103f0847539550066a84bac07f526689a80bd2b2d6fbd09b31c0eb9b19b732fec06dcfa3d4512a6d2
7
+ data.tar.gz: 58b1a338bf60c86fbba8b53fe7f340bab83d8a28bce65d7a84e2fab82bc2c79440340e498a1e52c248e7e5e5286dd3486a29638551298170a1d19d78e3958893
data/.rubocop.yml ADDED
@@ -0,0 +1,4 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ Style/IndentationConsistency:
4
+ EnforcedStyle: rails
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,153 @@
1
+ require: rubocop-rspec
2
+ # This configuration was generated by
3
+ # `rubocop --auto-gen-config`
4
+ # on 2016-07-11 08:45:16 -0500 using RuboCop version 0.41.2.
5
+ # The point is for the user to remove these configuration records
6
+ # one by one as the offenses are removed from the code base.
7
+ # Note that changes in the inspected code, or installation of new
8
+ # versions of RuboCop, may require this file to be generated again.
9
+
10
+ # Offense count: 9
11
+ # Configuration parameters: AllowSafeAssignment.
12
+ Lint/AssignmentInCondition:
13
+ Exclude:
14
+ - 'app/models/riiif/file.rb'
15
+ - 'app/models/riiif/image.rb'
16
+ - 'lib/riiif/http_file_resolver.rb'
17
+
18
+ # Offense count: 1
19
+ Lint/HandleExceptions:
20
+ Exclude:
21
+ - 'spec/models/riiif/http_file_resolver_spec.rb'
22
+
23
+ # Offense count: 1
24
+ Lint/UselessAssignment:
25
+ Exclude:
26
+ - 'app/models/riiif/file.rb'
27
+
28
+ # Offense count: 5
29
+ Metrics/AbcSize:
30
+ Max: 28
31
+
32
+ # Offense count: 1
33
+ Metrics/CyclomaticComplexity:
34
+ Max: 8
35
+
36
+ # Offense count: 65
37
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
38
+ # URISchemes: http, https
39
+ Metrics/LineLength:
40
+ Max: 160
41
+
42
+ # Offense count: 7
43
+ # Configuration parameters: CountComments.
44
+ Metrics/MethodLength:
45
+ Max: 17
46
+
47
+ # Offense count: 1
48
+ Metrics/PerceivedComplexity:
49
+ Max: 9
50
+
51
+ # Offense count: 1
52
+ # Cop supports --auto-correct.
53
+ Performance/RedundantMatch:
54
+ Exclude:
55
+ - 'lib/riiif/file_system_file_resolver.rb'
56
+
57
+ # Offense count: 1
58
+ RSpec/DescribeClass:
59
+ Exclude:
60
+ - 'spec/routing/resize_routes_spec.rb'
61
+
62
+ # Offense count: 6
63
+ # Configuration parameters: Max.
64
+ RSpec/ExampleLength:
65
+ Exclude:
66
+ - 'spec/controllers/riiif/images_controller_spec.rb'
67
+ - 'spec/models/riiif/http_file_resolver_spec.rb'
68
+
69
+ # Offense count: 4
70
+ RSpec/VerifiedDoubles:
71
+ Exclude:
72
+ - 'spec/controllers/riiif/images_controller_spec.rb'
73
+
74
+ # Offense count: 3
75
+ # Cop supports --auto-correct.
76
+ # Configuration parameters: EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle, SupportedLastArgumentHashStyles.
77
+ # SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
78
+ Style/AlignHash:
79
+ Exclude:
80
+ - 'lib/riiif/routes.rb'
81
+
82
+ # Offense count: 1
83
+ # Cop supports --auto-correct.
84
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
85
+ # SupportedStyles: braces, no_braces, context_dependent
86
+ Style/BracesAroundHashParameters:
87
+ Exclude:
88
+ - 'app/models/riiif/image.rb'
89
+
90
+ # Offense count: 1
91
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
92
+ # SupportedStyles: nested, compact
93
+ Style/ClassAndModuleChildren:
94
+ Exclude:
95
+ - 'lib/riiif/rails/routes.rb'
96
+
97
+ # Offense count: 1
98
+ # Cop supports --auto-correct.
99
+ Style/ColonMethodCall:
100
+ Exclude:
101
+ - 'lib/riiif/http_file_resolver.rb'
102
+
103
+ # Offense count: 13
104
+ Style/Documentation:
105
+ Exclude:
106
+ - 'spec/**/*'
107
+ - 'test/**/*'
108
+ - 'app/controllers/riiif/images_controller.rb'
109
+ - 'app/models/riiif/file.rb'
110
+ - 'app/models/riiif/image.rb'
111
+ - 'lib/riiif.rb'
112
+ - 'lib/riiif/akubra_system_file_resolver.rb'
113
+ - 'lib/riiif/engine.rb'
114
+ - 'lib/riiif/file_system_file_resolver.rb'
115
+ - 'lib/riiif/http_file_resolver.rb'
116
+ - 'lib/riiif/nil_authorization_service.rb'
117
+ - 'lib/riiif/rails/routes.rb'
118
+ - 'lib/riiif/routes.rb'
119
+
120
+ # Offense count: 3
121
+ # Cop supports --auto-correct.
122
+ Style/EmptyLines:
123
+ Exclude:
124
+ - 'app/models/riiif/image.rb'
125
+ - 'lib/riiif/file_system_file_resolver.rb'
126
+ - 'lib/riiif/http_file_resolver.rb'
127
+
128
+ # Offense count: 6
129
+ # Cop supports --auto-correct.
130
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
131
+ # SupportedStyles: empty_lines, no_empty_lines
132
+ Style/EmptyLinesAroundClassBody:
133
+ Exclude:
134
+ - 'app/models/riiif/file.rb'
135
+ - 'app/models/riiif/image.rb'
136
+ - 'lib/riiif/file_system_file_resolver.rb'
137
+ - 'lib/riiif/http_file_resolver.rb'
138
+
139
+ # Offense count: 3
140
+ # Cop supports --auto-correct.
141
+ Style/EmptyLinesAroundMethodBody:
142
+ Exclude:
143
+ - 'app/models/riiif/file.rb'
144
+ - 'app/models/riiif/image.rb'
145
+ - 'lib/riiif/rails/routes.rb'
146
+
147
+ # Offense count: 1
148
+ # Cop supports --auto-correct.
149
+ # Configuration parameters: AllowForAlignment, ForceEqualSignAlignment.
150
+ Style/ExtraSpacing:
151
+ Exclude:
152
+ - 'lib/riiif/routes.rb'
153
+
data/Rakefile CHANGED
@@ -1,11 +1,17 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
2
  require 'bundler/setup'
3
3
  require 'rspec/core/rake_task'
4
+ require 'rubocop/rake_task'
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
7
+ desc 'Run style checker'
8
+ RuboCop::RakeTask.new(:rubocop) do |task|
9
+ task.fail_on_error = true
10
+ end
11
+
6
12
  require 'engine_cart/rake_task'
7
- task ci: ['engine_cart:generate'] do
8
- Rake::Task["spec"].invoke
13
+ task ci: [:rubocop, 'engine_cart:generate'] do
14
+ Rake::Task['spec'].invoke
9
15
  end
10
16
 
11
- task default: :ci
17
+ task default: :ci
@@ -13,12 +13,12 @@ module Riiif
13
13
  :ok
14
14
  else
15
15
  :unauthorized
16
- end
16
+ end
17
17
  rescue ImageNotFoundError
18
18
  status = :not_found
19
19
  end
20
20
 
21
- image = not_found_image unless status == :ok
21
+ image = not_found_image unless status == :ok
22
22
 
23
23
  data = image.render(params.permit(:region, :size, :rotation, :quality, :format))
24
24
  headers['Access-Control-Allow-Origin'] = '*'
@@ -46,43 +46,43 @@ module Riiif
46
46
 
47
47
  protected
48
48
 
49
- LEVEL1 = 'http://iiif.io/api/image/2/level1.json'
49
+ LEVEL1 = 'http://iiif.io/api/image/2/level1.json'.freeze
50
50
 
51
- def model
52
- params.fetch(:model, "riiif/image").camelize.constantize
53
- end
51
+ def model
52
+ params.fetch(:model, 'riiif/image').camelize.constantize
53
+ end
54
54
 
55
- def image_id
56
- params[:id]
57
- end
55
+ def image_id
56
+ params[:id]
57
+ end
58
58
 
59
- def authorization_service
60
- model.authorization_service.new(self)
61
- end
59
+ def authorization_service
60
+ model.authorization_service.new(self)
61
+ end
62
62
 
63
- def link_header
64
- response.headers["Link"] = "<#{LEVEL1}>;rel=\"profile\""
65
- end
63
+ def link_header
64
+ response.headers['Link'] = "<#{LEVEL1}>;rel=\"profile\""
65
+ end
66
66
 
67
- def not_found_image
68
- raise "Not found image doesn't exist" unless Riiif.not_found_image
69
- model.new(image_id, Riiif::File.new(Riiif.not_found_image))
70
- end
67
+ def not_found_image
68
+ raise "Not found image doesn't exist" unless Riiif.not_found_image
69
+ model.new(image_id, Riiif::File.new(Riiif.not_found_image))
70
+ end
71
71
 
72
- CONTEXT = '@context'
73
- CONTEXT_URI = 'http://iiif.io/api/image/2/context.json'
74
- ID = '@id'
75
- PROTOCOL = 'protocol'
76
- PROTOCOL_URI = 'http://iiif.io/api/image'
77
- PROFILE = 'profile'
72
+ CONTEXT = '@context'.freeze
73
+ CONTEXT_URI = 'http://iiif.io/api/image/2/context.json'.freeze
74
+ ID = '@id'.freeze
75
+ PROTOCOL = 'protocol'.freeze
76
+ PROTOCOL_URI = 'http://iiif.io/api/image'.freeze
77
+ PROFILE = 'profile'.freeze
78
78
 
79
- def server_info
80
- {
81
- CONTEXT => CONTEXT_URI,
82
- ID => request.original_url.sub('/info.json', ''),
83
- PROTOCOL => PROTOCOL_URI,
84
- PROFILE => [LEVEL1, 'formats' => model::OUTPUT_FORMATS]
85
- }
86
- end
79
+ def server_info
80
+ {
81
+ CONTEXT => CONTEXT_URI,
82
+ ID => request.original_url.sub('/info.json', ''),
83
+ PROTOCOL => PROTOCOL_URI,
84
+ PROFILE => [LEVEL1, 'formats' => model::OUTPUT_FORMATS]
85
+ }
86
+ end
87
87
  end
88
88
  end
@@ -22,16 +22,16 @@ module Riiif
22
22
  end
23
23
  end
24
24
 
25
- def self.create(ext = nil, validate = true, &block)
26
- begin
27
- tempfile = Tempfile.new(['mini_magick', ext.to_s.downcase])
28
- tempfile.binmode
29
- block.call(tempfile)
30
- tempfile.close
31
- image = self.new(tempfile.path, tempfile)
32
- ensure
33
- tempfile.close if tempfile
34
- end
25
+ def self.create(ext = nil, _validate = true, &block)
26
+
27
+ tempfile = Tempfile.new(['mini_magick', ext.to_s.downcase])
28
+ tempfile.binmode
29
+ block.call(tempfile)
30
+ tempfile.close
31
+ image = new(tempfile.path, tempfile)
32
+ ensure
33
+ tempfile.close if tempfile
34
+
35
35
  end
36
36
 
37
37
  def extract(options)
@@ -57,24 +57,24 @@ module Riiif
57
57
  def info
58
58
  return @info if @info
59
59
  height, width = execute("identify -format %hx%w #{path}").split('x')
60
- @info = {height: Integer(height), width: Integer(width)}
60
+ @info = { height: Integer(height), width: Integer(width) }
61
61
  end
62
62
 
63
63
  private
64
64
 
65
65
  def execute(command)
66
- out = nil
67
- benchmark ("Riiif executed #{command}") do
68
- stdin, stdout, stderr, wait_thr = popen3(command)
69
- stdin.close
70
- stdout.binmode
71
- out = stdout.read
72
- stdout.close
73
- err = stderr.read
74
- stderr.close
75
- raise "Unable to execute command \"#{command}\"\n#{err}" unless wait_thr.value.success?
76
- end
77
- out
66
+ out = nil
67
+ benchmark("Riiif executed #{command}") do
68
+ stdin, stdout, stderr, wait_thr = popen3(command)
69
+ stdin.close
70
+ stdout.binmode
71
+ out = stdout.read
72
+ stdout.close
73
+ err = stderr.read
74
+ stderr.close
75
+ raise "Unable to execute command \"#{command}\"\n#{err}" unless wait_thr.value.success?
76
+ end
77
+ out
78
78
  end
79
79
 
80
80
  end
@@ -17,13 +17,13 @@ module Riiif
17
17
  end
18
18
  end
19
19
 
20
- OUTPUT_FORMATS = %W{jpg png}
20
+ OUTPUT_FORMATS = %w(jpg png).freeze
21
21
 
22
22
  attr_reader :id
23
23
 
24
24
  # @param [String] id The identifier of the file to be looked up.
25
25
  # @param [Riiif::File] file Optional: The Riiif::File to use instead of looking one up.
26
- def initialize(id, file=nil)
26
+ def initialize(id, file = nil)
27
27
  @id = id
28
28
  @image = file if file.present?
29
29
  end
@@ -50,7 +50,7 @@ module Riiif
50
50
 
51
51
 
52
52
  def cache_key(id, options)
53
- str = options.merge(id: id).delete_if {|_, v| v.nil?}.to_s
53
+ str = options.merge(id: id).delete_if { |_, v| v.nil? }.to_s
54
54
  # Use a MD5 digest to ensure the keys aren't too long.
55
55
  Digest::MD5.hexdigest(str)
56
56
  end
@@ -70,9 +70,9 @@ module Riiif
70
70
  end
71
71
 
72
72
  def decode_quality(quality)
73
- return if quality.nil? || ['default', 'color'].include?(quality)
74
- return quality if ['bitonal', 'grey'].include?(quality)
75
- raise InvalidAttributeError, "Unsupported quality: #{quality}"
73
+ return if quality.nil? || %w(default color).include?(quality)
74
+ return quality if %w(bitonal grey).include?(quality)
75
+ raise InvalidAttributeError, "Unsupported quality: #{quality}"
76
76
  end
77
77
 
78
78
  def decode_rotation(rotation)
@@ -91,7 +91,7 @@ module Riiif
91
91
 
92
92
  def decode_region(region)
93
93
  if region.nil? || region == 'full'
94
- nil
94
+ nil
95
95
  elsif md = /^pct:(\d+),(\d+),(\d+),(\d+)$/.match(region)
96
96
  # Image magic can't do percentage offsets, so we have to calculate it
97
97
  offset_x = (info[:width] * Integer(md[1]).to_f / 100).round
@@ -110,7 +110,7 @@ module Riiif
110
110
  elsif md = /^,(\d+)$/.match(size)
111
111
  "x#{md[1]}"
112
112
  elsif md = /^(\d+),$/.match(size)
113
- "#{md[1]}"
113
+ (md[1]).to_s
114
114
  elsif md = /^pct:(\d+(.\d+)?)$/.match(size)
115
115
  "#{md[1]}%"
116
116
  elsif md = /^(\d+),(\d+)$/.match(size)
@@ -0,0 +1,26 @@
1
+ module Riiif
2
+ class AbstractFileSystemResolver
3
+ attr_accessor :root, :base_path
4
+
5
+ def initialize
6
+ @root = ::File.expand_path(::File.join(::File.dirname(__FILE__), '../..'))
7
+ @base_path = ::File.join(root, 'spec/samples')
8
+ end
9
+
10
+ def find(id)
11
+ Riiif::File.new(path(id))
12
+ end
13
+
14
+ # @param [String] id the id to resolve
15
+ # @return the path of the file
16
+ def path(id)
17
+ search = pattern(id)
18
+ Dir.glob(search).first || raise(ImageNotFoundError, search)
19
+ end
20
+
21
+ def pattern(id)
22
+ raise NotImplementedError, "Implement `pattern(id)' in the concrete class"
23
+ end
24
+ end
25
+ end
26
+
@@ -1,22 +1,13 @@
1
1
  require 'digest'
2
2
  require 'cgi'
3
3
  module Riiif
4
- class AkubraSystemFileResolver
4
+ class AkubraSystemFileResolver < AbstractFileSystemResolver
5
5
  attr_accessor :pathroot, :imagetype, :akubraconfig
6
6
 
7
- def initialize(pr="/yourfedora/data/datastreamStore/",ir="jp2",ac=[[0,2],[2,2],[4,1]])
8
- @pathroot = pr
9
- @imagetype = ir
10
- @akubraconfig = ac
11
- end
12
-
13
- def find(id)
14
- Riiif::File.new(path(id))
15
- end
16
-
17
- def path(id)
18
- search = pattern(id)
19
- Dir.glob(search).first || raise(ImageNotFoundError, search)
7
+ def initialize(pr = '/yourfedora/data/datastreamStore/', ir = 'jp2', ac = [[0, 2], [2, 2], [4, 1]])
8
+ @pathroot = pr
9
+ @imagetype = ir
10
+ @akubraconfig = ac
20
11
  end
21
12
 
22
13
  def pattern(id)
@@ -24,8 +15,8 @@ module Riiif
24
15
  md5 = Digest::MD5.new
25
16
  md5.update fullpid
26
17
  digest = md5.hexdigest
27
- directorystr = ""
28
- @akubraconfig.each { |a| directorystr << digest[a[0],a[1]] << "/" }
18
+ directorystr = ''
19
+ @akubraconfig.each { |a| directorystr << digest[a[0], a[1]] << '/' }
29
20
  filename = CGI.escape(fullpid)
30
21
  @pathroot + directorystr + filename
31
22
  end
@@ -1,27 +1,16 @@
1
1
  module Riiif
2
- class FileSystemFileResolver
3
- attr_accessor :root, :base_path, :input_types
4
-
5
- def initialize
6
- @root = ::File.expand_path(::File.join(::File.dirname(__FILE__), '../..'))
7
- @base_path = ::File.join(root, 'spec/samples')
8
- @input_types = %W{png jpg tiff jp jp2}
9
- end
10
-
11
- def find(id)
12
- Riiif::File.new(path(id))
13
- end
14
-
15
- def path(id)
16
- search = pattern(id)
17
- Dir.glob(search).first || raise(ImageNotFoundError, search)
18
- end
19
-
2
+ class FileSystemFileResolver < AbstractFileSystemResolver
3
+ attr_writer :input_types
20
4
 
21
5
  def pattern(id)
22
- raise ArgumentError, "Invalid characters in id `#{id}`" unless /^[\w\-:]+$/.match(id)
6
+ raise ArgumentError, "Invalid characters in id `#{id}`" unless %r{^[\w\-:]+$}.match(id)
23
7
  ::File.join(base_path, "#{id}.{#{input_types.join(',')}}")
24
8
  end
25
9
 
10
+ private
11
+
12
+ def input_types
13
+ @input_types ||= %w(png jpg tiff jp jp2)
14
+ end
26
15
  end
27
16
  end
@@ -51,48 +51,48 @@ module Riiif
51
51
 
52
52
  private
53
53
 
54
- def ext
55
- @ext ||= ::File.extname(URI.parse(url).path)
56
- end
54
+ def ext
55
+ @ext ||= ::File.extname(URI.parse(url).path)
56
+ end
57
57
 
58
- def file_name
59
- @cache_file_name ||= ::File.join(cache_path, Digest::MD5.hexdigest(url)+"#{ext}")
60
- end
58
+ def file_name
59
+ @cache_file_name ||= ::File.join(cache_path, Digest::MD5.hexdigest(url) + ext.to_s)
60
+ end
61
61
 
62
- def download_file
63
- ensure_cache_path(::File.dirname(file_name))
64
- benchmark ("Riiif downloaded #{url}") do
65
- ::File.atomic_write(file_name, cache_path) do |local|
66
- begin
67
- Kernel::open(url, download_opts) do |remote|
68
- while chunk = remote.read(8192)
69
- local.write(chunk)
62
+ def download_file
63
+ ensure_cache_path(::File.dirname(file_name))
64
+ benchmark("Riiif downloaded #{url}") do
65
+ ::File.atomic_write(file_name, cache_path) do |local|
66
+ begin
67
+ Kernel::open(url, download_opts) do |remote|
68
+ while chunk = remote.read(8192)
69
+ local.write(chunk)
70
+ end
70
71
  end
72
+ rescue OpenURI::HTTPError => e
73
+ raise ImageNotFoundError, e
71
74
  end
72
- rescue OpenURI::HTTPError => e
73
- raise ImageNotFoundError.new(e)
74
75
  end
75
76
  end
76
77
  end
77
- end
78
78
 
79
- # Get a hash of options for passing to Kernel::open
80
- # This is the primary pathway for passing basic auth credentials
81
- def download_opts
82
- basic_auth_credentials ? { http_basic_authentication: basic_auth_credentials } : {}
83
- end
79
+ # Get a hash of options for passing to Kernel::open
80
+ # This is the primary pathway for passing basic auth credentials
81
+ def download_opts
82
+ basic_auth_credentials ? { http_basic_authentication: basic_auth_credentials } : {}
83
+ end
84
84
 
85
- # Make sure a file path's directories exist.
86
- def ensure_cache_path(path)
87
- FileUtils.makedirs(path) unless ::File.exist?(path)
88
- end
85
+ # Make sure a file path's directories exist.
86
+ def ensure_cache_path(path)
87
+ FileUtils.makedirs(path) unless ::File.exist?(path)
88
+ end
89
89
  end
90
90
 
91
91
 
92
92
  protected
93
93
 
94
94
  def uri(id)
95
- raise "Must set the id_to_uri lambda" if id_to_uri.nil?
95
+ raise 'Must set the id_to_uri lambda' if id_to_uri.nil?
96
96
  id_to_uri.call(id)
97
97
  end
98
98
 
@@ -9,4 +9,4 @@ module ActionDispatch::Routing
9
9
 
10
10
  end
11
11
  end
12
- end
12
+ end
data/lib/riiif/routes.rb CHANGED
@@ -8,7 +8,7 @@ module Riiif
8
8
  @options = options
9
9
  end
10
10
 
11
- def add_routes &blk
11
+ def add_routes(&blk)
12
12
  @router.instance_exec(@options, &blk)
13
13
  end
14
14
 
@@ -17,12 +17,12 @@ module Riiif
17
17
  resource = options.fetch(:resource)
18
18
  route_prefix = options[:at]
19
19
  route_prefix ||= "/#{options[:as]}" if options[:as]
20
- get "#{route_prefix}/:id/:region/:size/:rotation/:quality.:format" => "riiif/images#show",
20
+ get "#{route_prefix}/:id/:region/:size/:rotation/:quality.:format" => 'riiif/images#show',
21
21
  constraints: { rotation: ALLOW_DOTS, size: SIZES },
22
22
  defaults: { format: 'jpg', rotation: '0', region: 'full', quality: 'default', model: resource },
23
- as: options[:as] || "image"
23
+ as: options[:as] || 'image'
24
24
 
25
- get "#{route_prefix}/:id/info.json" => "riiif/images#info", defaults: { format: 'json', model: resource }, as: [options[:as], "info"].compact.join("_")
25
+ get "#{route_prefix}/:id/info.json" => 'riiif/images#info', defaults: { format: 'json', model: resource }, as: [options[:as], 'info'].compact.join('_')
26
26
 
27
27
  # This doesn't work presently
28
28
  # get "#{route_prefix}/:id", to: redirect("#{route_prefix}/%{id}/info.json")
data/lib/riiif/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Riiif
2
- VERSION = "0.3.0"
2
+ VERSION = '0.4.0'.freeze
3
3
  end
data/lib/riiif.rb CHANGED
@@ -1,9 +1,10 @@
1
- require "riiif/version"
2
- require "riiif/engine"
1
+ require 'riiif/version'
2
+ require 'riiif/engine'
3
3
 
4
4
  module Riiif
5
5
  extend ActiveSupport::Autoload
6
6
  autoload :Image
7
+ autoload :AbstractFileSystemResolver
7
8
  autoload :FileSystemFileResolver
8
9
  autoload :HTTPFileResolver
9
10
  autoload :Routes
@@ -14,7 +15,7 @@ module Riiif
14
15
  class InvalidAttributeError < Error; end
15
16
  class ImageNotFoundError < Error
16
17
  attr_reader :original_exception
17
- def initialize(orig=nil)
18
+ def initialize(orig = nil)
18
19
  @original_exception = orig
19
20
  end
20
21
  end