+
+ changeset = Changeset.find(params[:id])
+
+ unless @user.id == changeset.user_id
+ raise OSM::APIUserChangesetMismatchError
+ end
+
+ # to close the changeset, we'll just set its closed_at time to
+ # now. this might not be enough if there are concurrency issues,
+ # but we'll have to wait and see.
+ changeset.closed_at = DateTime.now
+
+ changeset.save!
+ render :nothing => true
+ rescue ActiveRecord::RecordNotFound
+ render :nothing => true, :status => :not_found
+ rescue OSM::APIError => ex
+ render ex.render_opts