module Api
class ChangesetsController < ApiController
- require "xml/libxml"
-
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 :setup_user_auth, :only => [:show]
@comments = @comments.unscope(:where => :visible) if params[:show_hidden_comments].presence && can?(:restore, ChangesetComment)
@comments = @comments.includes(:author)
end
- render "changeset"
respond_to do |format|
format.xml
# Create a changeset from XML.
def create
- assert_method :put
-
cs = Changeset.from_xml(request.raw_post, :create => true)
# Assume that Changeset.from_xml has thrown an exception if there is an error parsing the xml
# marks a changeset as closed. this may be called multiple times
# on the same changeset, so is idempotent.
def close
- assert_method :put
-
changeset = Changeset.find(params[:id])
check_changeset_consistency(changeset, current_user)
# Returns: a diffResult document, as described in
# http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.6
def upload
- # only allow POST requests, as the upload method is most definitely
- # not idempotent, as several uploads with placeholder IDs will have
- # different side-effects.
- # see http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.2
- assert_method :post
-
changeset = Changeset.find(params[:id])
check_changeset_consistency(changeset, current_user)
#
# after succesful update, returns the XML of the changeset.
def update
- # request *must* be a PUT.
- assert_method :put
-
@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 "changeset"
+ render "show"
respond_to do |format|
format.xml
# Return a copy of the updated changeset
@changeset = changeset
- render "changeset"
+ render "show"
respond_to do |format|
format.xml
# Return a copy of the updated changeset
@changeset = changeset
- render "changeset"
+ render "show"
respond_to do |format|
format.xml