Sha256: 2a64bda3b9402d5f1e75b28d581fc6a00450216677c7928baffe1fab1977156d

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

module Riiif
  class Routes
    ALLOW_DOTS ||= /[\w.]+/
    SIZES ||= /(pct:)?[\w.,]+/

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

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

    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'
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
riiif-0.4.1 lib/riiif/routes.rb
riiif-0.4.0 lib/riiif/routes.rb