X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/152414861caa30e9217e3451caabd5a2b983ce2b..b801f3e3e59bc9f9bcdc7b64db2f45e9acd363ef:/app/controllers/api/changesets_controller.rb diff --git a/app/controllers/api/changesets_controller.rb b/app/controllers/api/changesets_controller.rb index 56070951a..a08edff53 100644 --- a/app/controllers/api/changesets_controller.rb +++ b/app/controllers/api/changesets_controller.rb @@ -19,6 +19,9 @@ module Api # Helper methods for checking consistency include ConsistencyValidations + DEFAULT_QUERY_LIMIT = 100 + MAX_QUERY_LIMIT = 100 + ## # Return XML giving the basic info about the changeset. Does not # return anything about the nodes, ways and relations in the changeset. @@ -171,7 +174,7 @@ module Api changesets = conditions_ids(changesets, params["changesets"]) # sort and limit the changesets - changesets = changesets.order("created_at DESC").limit(100) + changesets = changesets.order("created_at DESC").limit(result_limit) # preload users, tags and comments, and render result @changesets = changesets.preload(:user, :changeset_tags, :comments) @@ -383,5 +386,19 @@ module Api changesets.where(:id => ids) end end + + ## + # Get the maximum number of results to return + def result_limit + if params[:limit] + if params[:limit].to_i.positive? && params[:limit].to_i <= MAX_QUERY_LIMIT + params[:limit].to_i + else + raise OSM::APIBadUserInput, "Changeset limit must be between 1 and #{MAX_QUERY_LIMIT}" + end + else + DEFAULT_QUERY_LIMIT + end + end end end