lib/hyperdrive/middleware/pagination.rb in hyperdrive-0.0.8 vs lib/hyperdrive/middleware/pagination.rb in hyperdrive-0.0.9
- old
+ new
@@ -1,19 +1,22 @@
# encoding: utf-8
module Hyperdrive
module Middleware
class Pagination
+ attr_reader :default_per_page
def initialize(app)
@app = app
+ @default_per_page = hyperdrive.config.fetch(:per_page) { 20 }
end
def call(env)
if %(GET HEAD).include? env['REQUEST_METHOD']
- env['hyperdrive.page'] = env['hyperdrive.params'].delete(:page) { 1 }
- env['hyperdrive.page'] = 1 if env['hyperdrive.page'].to_i < 1
- env['hyperdrive.per_page'] = env['hyperdrive.params'].delete(:per_page) { hyperdrive.config.fetch(:per_page) { 20 } }
- env['hyperdrive.per_page'] = 20 if env['hyperdrive.per_page'].to_i == 0
+ params = Rack::Request.new(env).params
+ env['hyperdrive.page'] = params.delete('page') { 1 }.to_i
+ env['hyperdrive.page'] = 1 if env['hyperdrive.page'] < 1
+ env['hyperdrive.per_page'] = params.delete('per_page') { default_per_page }.to_i
+ env['hyperdrive.per_page'] = default_per_page if env['hyperdrive.per_page'] == 0
end
@app.call(env)
end
end
end