X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/94b59f440321846760d430fee378f05a6a2803ee..2142ff02c2442d28580ff99080bc1219c2bfe59f:/app/controllers/api/changesets_controller.rb diff --git a/app/controllers/api/changesets_controller.rb b/app/controllers/api/changesets_controller.rb index 853ee389f..ffd9a112b 100644 --- a/app/controllers/api/changesets_controller.rb +++ b/app/controllers/api/changesets_controller.rb @@ -1,20 +1,17 @@ # The ChangesetController is the RESTful interface to Changeset objects module Api - class ChangesetsController < ApplicationController + class ChangesetsController < ApiController layout "site" require "xml/libxml" - skip_before_action :verify_authenticity_token before_action :authorize, :only => [:create, :update, :upload, :close, :subscribe, :unsubscribe] - before_action :api_deny_access_handler, :only => [:create, :update, :upload, :close, :subscribe, :unsubscribe, :expand_bbox] authorize_resource before_action :require_public_data, :only => [:create, :update, :upload, :close, :subscribe, :unsubscribe] before_action :check_api_writable, :only => [:create, :update, :upload, :subscribe, :unsubscribe] before_action :check_api_readable, :except => [:create, :update, :upload, :download, :query, :subscribe, :unsubscribe] - before_action(:only => [:index, :feed]) { |c| c.check_database_readable(true) } around_action :api_call_handle_error around_action :api_call_timeout, :except => [:upload] @@ -41,9 +38,9 @@ module Api # Return XML giving the basic info about the changeset. Does not # return anything about the nodes, ways and relations in the changeset. def show - changeset = Changeset.find(params[:id]) - - render :xml => changeset.to_xml(params[:include_discussion].presence).to_s + @changeset = Changeset.find(params[:id]) + @include_discussion = params[:include_discussion].presence + render "changeset" end ## @@ -104,7 +101,8 @@ module Api # save the larger bounding box and return the changeset, which # will include the bigger bounding box. cs.save! - render :xml => cs.to_xml.to_s + @changeset = cs + render "changeset" end ## @@ -219,18 +217,9 @@ module Api # sort and limit the changesets changesets = changesets.order("created_at DESC").limit(100) - # preload users, tags and comments - changesets = changesets.preload(:user, :changeset_tags, :comments) - - # create the results document - results = OSM::API.new.get_xml_doc - - # add all matching changesets to the XML results document - changesets.order("created_at DESC").limit(100).each do |cs| - results.root << cs.to_xml_node - end - - render :xml => results.to_s + # preload users, tags and comments, and render result + @changesets = changesets.preload(:user, :changeset_tags, :comments) + render "changesets" end ## @@ -245,12 +234,12 @@ module Api # request *must* be a PUT. assert_method :put - changeset = Changeset.find(params[:id]) + @changeset = Changeset.find(params[:id]) new_changeset = Changeset.from_xml(request.raw_post) - check_changeset_consistency(changeset, current_user) - changeset.update_from(new_changeset, current_user) - render :xml => changeset.to_xml.to_s + check_changeset_consistency(@changeset, current_user) + @changeset.update_from(new_changeset, current_user) + render "changeset" end ## @@ -270,7 +259,8 @@ module Api changeset.subscribers << current_user # Return a copy of the updated changeset - render :xml => changeset.to_xml.to_s + @changeset = changeset + render "changeset" end ## @@ -290,7 +280,8 @@ module Api changeset.subscribers.delete(current_user) # Return a copy of the updated changeset - render :xml => changeset.to_xml.to_s + @changeset = changeset + render "changeset" end private @@ -373,10 +364,10 @@ module Api end # stupid Time seems to throw both of these for bad parsing, so # we have to catch both and ensure the correct code path is taken. - rescue ArgumentError => ex - raise OSM::APIBadUserInput, ex.message.to_s - rescue RuntimeError => ex - raise OSM::APIBadUserInput, ex.message.to_s + rescue ArgumentError => e + raise OSM::APIBadUserInput, e.message.to_s + rescue RuntimeError => e + raise OSM::APIBadUserInput, e.message.to_s end ##