]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/api/changeset_comments_controller.rb
Merge remote-tracking branch 'upstream/pull/4822'
[rails.git] / app / controllers / api / changeset_comments_controller.rb
index 8b971834d76432d2728a2d7c0bd059691a9328e4..e8d3f4c3a8df2c5dbcc1ae77f864d77057846449 100644 (file)
@@ -17,6 +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?
       # 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 rate_limit_exceeded?
 
       # Extract the arguments
       id = params[:id].to_i
 
       # Extract the arguments
       id = params[:id].to_i
@@ -41,7 +42,7 @@ module Api
 
       # Return a copy of the updated changeset
       @changeset = changeset
 
       # Return a copy of the updated changeset
       @changeset = changeset
-      render "api/changesets/changeset"
+      render "api/changesets/show"
 
       respond_to do |format|
         format.xml
 
       respond_to do |format|
         format.xml
@@ -66,7 +67,7 @@ module Api
 
       # Return a copy of the updated changeset
       @changeset = comment.changeset
 
       # Return a copy of the updated changeset
       @changeset = comment.changeset
-      render "api/changesets/changeset"
+      render "api/changesets/show"
 
       respond_to do |format|
         format.xml
 
       respond_to do |format|
         format.xml
@@ -91,12 +92,22 @@ module Api
 
       # Return a copy of the updated changeset
       @changeset = comment.changeset
 
       # Return a copy of the updated changeset
       @changeset = comment.changeset
-      render "api/changesets/changeset"
+      render "api/changesets/show"
 
       respond_to do |format|
         format.xml
         format.json
       end
     end
 
       respond_to do |format|
         format.xml
         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
   end
 end