]> git.openstreetmap.org Git - rails.git/commitdiff
Move changeset comment rate limit check to a predicate method
authorTom Hughes <tom@compton.nu>
Wed, 30 Aug 2023 17:28:32 +0000 (18:28 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 30 Aug 2023 17:36:33 +0000 (18:36 +0100)
app/controllers/api/changeset_comments_controller.rb

index a9e80630e22226447bc9797f363ac2b854801987..bb77e1106609b2cea7b0190a61fcb160fd4032b0 100644 (file)
@@ -17,7 +17,7 @@ module Api
       # Check the arguments are sane
       raise OSM::APIBadUserInput, "No id was given" unless params[:id]
       raise OSM::APIBadUserInput, "No text was given" if params[:text].blank?
-      raise OSM::APIRateLimitExceeded if current_user.changeset_comments.where("created_at >= ?", Time.now.utc - 1.hour).count >= current_user.max_changeset_comments_per_hour
+      raise OSM::APIRateLimitExceeded if rate_limit_exceeded?
 
       # Extract the arguments
       id = params[:id].to_i
@@ -99,5 +99,15 @@ module Api
         format.json
       end
     end
+
+    private
+
+    ##
+    # Check if the current user has exceed the rate limit for comments
+    def rate_limit_exceeded?
+      recent_comments = current_user.changeset_comments.where("created_at >= ?", Time.now.utc - 1.hour).count
+
+      recent_comments >= current_user.max_changeset_comments_per_hour
+    end
   end
 end