lib/agouti/rack/package_limiter.rb in agouti-0.0.2 vs lib/agouti/rack/package_limiter.rb in agouti-0.0.3
- old
+ new
@@ -46,11 +46,11 @@
status, headers, body = @app.call(env)
set_limit(env)
if enabled?(env)
- unless headers['Content-Type'] == 'text/html'
+ unless headers['Content-Type'] && headers['Content-Type'].include?('text/html')
return [204, {}, []]
end
headers = ::Rack::Utils::HeaderHash.new(headers)
@@ -69,30 +69,37 @@
def get_http_header env, header
env["HTTP_#{header.upcase.gsub('-', '_')}"]
end
def enabled? env
- get_http_header(env, ENABLE_HEADER) && get_http_header(env, ENABLE_HEADER) == 1
+ get_http_header(env, ENABLE_HEADER).to_i == 1
end
def set_limit env
@limit = (get_http_header(env, LIMIT_HEADER)) ? get_http_header(env, LIMIT_HEADER).to_i : DEFAULT_LIMIT
end
- def valid_enable_header? env
- header = get_http_header(env, ENABLE_HEADER)
+ def valid? env
+ valid_enable_header?(env) && valid_limit_header?(env)
+ end
- (0..1).include?(header) || header.nil?
+ def parseable?(header)
+ (header =~ /^[0-9]+$/) == 0
end
- def valid_limit_header? env
- header = get_http_header(env, LIMIT_HEADER)
+ # Defines two methods: valid_enable_header? and valid_limit_header?
+ ['enable', 'limit'].each do |action|
+ define_method("valid_#{action}_header?") do |env|
+ header = get_http_header(env, self.class.const_get("#{action.upcase}_HEADER"))
- (header.kind_of?(Integer) && header > 0) || header.nil?
- end
+ return true if header.nil?
- def valid? env
- valid_enable_header?(env) && valid_limit_header?(env)
+ if parseable?(header)
+ header.to_i >= 0
+ else
+ false
+ end
+ end
end
# Public: class responsible for truncating the gzip stream to a given number of bytes.
class GzipTruncatedStream < ::Rack::Deflater::GzipStream
# Public: Constructor.