more strict integer checks

This commit is contained in:
Kyle Drake 2024-02-17 10:27:02 -06:00
parent 1d87b87e62
commit f7e65ec61b
10 changed files with 30 additions and 21 deletions

View file

@ -1,13 +1,8 @@
get '/browse/?' do
@surfmode = false
begin
@page = params[:page].to_i
rescue
@page = 1
end
@page = 1 if @page == 0
@page = params[:page]
@page = 1 if @page.not_an_integer?
params.delete 'tag' if params[:tag].nil? || params[:tag].strip.empty?
@ -17,7 +12,7 @@ get '/browse/?' do
ds = browse_sites_dataset
end
ds = ds.paginate @page, Site::BROWSE_PAGINATION_LENGTH
ds = ds.paginate @page.to_i, Site::BROWSE_PAGINATION_LENGTH
@pagination_dataset = ds
@sites = ds.all

View file

@ -8,8 +8,8 @@ get '/?' do
redirect '/dashboard' if current_site.is_education
@page = params[:page].to_i
@page = 1 if @page == 0
@page = params[:page]
@page = 1 if @page.not_an_integer?
if params[:activity] == 'mine'
events_dataset = current_site.latest_events(@page, 10)

View file

@ -17,12 +17,10 @@ get '/site/:username/?' do |username|
@title = site.title
@page = params[:page]
@page = @page.to_i
@page = 1 if @page == 0
@page = 1 if @page.not_an_integer?
if params[:event_id]
not_found if params[:event_id].is_a?(Array)
not_found unless params[:event_id].to_i > 0
not_found if params[:event_id].not_an_integer?
event = Event.select(:id).where(id: params[:event_id]).first
not_found if event.nil?
events_dataset = Event.where(id: params[:event_id]).paginate(1, 1)
@ -84,7 +82,7 @@ get '/site/:username/stats' do
if @site.supporter?
unless params[:days].to_s == 'sincethebigbang'
if params[:days] && params[:days].to_i != 0
unless params[:days].not_an_integer?
stats_dataset = stats_dataset.limit params[:days]
else
params[:days] = @default_stat_points

View file

@ -1,9 +1,10 @@
get '/surf/?' do
not_found # 404 for now
@page = params[:page].to_i || 1
@page = params[:page]
@page = 1 if @page.not_an_integer?
params.delete 'tag' if params[:tag].nil? || params[:tag].strip.empty?
site_dataset = browse_sites_dataset
site_dataset = site_dataset.paginate @page, 1
site_dataset = site_dataset.paginate @page.to_i, 1
@page_count = site_dataset.page_count || 1
@site = site_dataset.first
redirect "/browse?#{Rack::Utils.build_query params}" if @site.nil?

View file

@ -143,7 +143,7 @@ def stripe_get_site_from_event(event)
site_where = {username: desc_split.first}
end
if desc_split.last.to_i == 0
if desc_split.last.not_an_integer?
site_where = {username: desc_split.first}
else
site_where = {id: desc_split.last}

View file

@ -6,4 +6,8 @@ class NilClass
def blank?
true
end
def not_an_integer?
true
end
end

View file

@ -76,4 +76,8 @@ class Numeric
def to_space_pretty
to_bytes_pretty
end
def not_an_integer?
!self.integer?
end
end

View file

@ -16,4 +16,11 @@ class String
return true if self == ''
false
end
def not_an_integer?
Integer(self)
false
rescue ArgumentError
true
end
end

View file

@ -50,7 +50,7 @@ class Event < Sequel::Model
def self.global_dataset(current_page=1, limit=DEFAULT_GLOBAL_LIMIT)
news_feed_default_dataset.
paginate(current_page, 100).
paginate(current_page.to_i, 100).
exclude(is_nsfw: true).
exclude(is_crashing: true).
where{views > GLOBAL_VIEWS_MINIMUM}.

View file

@ -1350,7 +1350,7 @@ class Site < Sequel::Model
site_id = self.id
Event.news_feed_default_dataset.where{Sequel.|({site_id: site_id}, {actioning_site_id: site_id})}.
order(:created_at.desc).
paginate(current_page, limit)
paginate(current_page.to_i, limit.to_i)
end
def news_feed(current_page=1, limit=10)
@ -1359,7 +1359,7 @@ class Site < Sequel::Model
Event.news_feed_default_dataset.where{Sequel.|({site_id: search_ids}, {actioning_site_id: search_ids})}.
order(:created_at.desc).
paginate(current_page, limit)
paginate(current_page.to_i, limit.to_i)
end
def newest_follows