Class: Riiif::Routes

Inherits:
Object
  • Object
show all
Defined in:
lib/riiif/routes.rb

Instance Method Summary collapse

Constructor Details

#initialize(router, options) ⇒ Routes

Returns a new instance of Routes.



6
7
8
9
# File 'lib/riiif/routes.rb', line 6

def initialize(router, options)
  @router = router
  @options = options
end

Instance Method Details

#add_routes(&blk) ⇒ Object



11
12
13
# File 'lib/riiif/routes.rb', line 11

def add_routes(&blk)
  @router.instance_exec(@options, &blk)
end

#drawObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/riiif/routes.rb', line 15

def draw
  add_routes do |options|
    resource = options.fetch(:resource)
    route_prefix = options[:at]
    route_prefix ||= "/#{options[:as]}" if options[:as]
    get "#{route_prefix}/:id/:region/:size/:rotation/:quality.:format" => 'riiif/images#show',
        constraints: { rotation: ALLOW_DOTS, size: SIZES },
        defaults: { format: 'jpg', rotation: '0', region: 'full', quality: 'default', model: resource },
        as: options[:as] || 'image'

    get "#{route_prefix}/:id/info.json" => 'riiif/images#info',
        defaults: { format: 'json', model: resource },
        as: [options[:as], 'info'].compact.join('_')

    # This doesn't work presently
    # get "#{route_prefix}/:id", to: redirect("#{route_prefix}/%{id}/info.json")
    get "#{route_prefix}/:id" => 'riiif/images#redirect', as: [options[:as], 'base'].compact.join('_')
  end
end