Extend API to allow changesets to be queried by ids
Make changesets queryable by specifying a list of ids, for example: /api/0.6/changesets?changesets=1,2,3 This condition may be combined with others in the normal way.
This commit is contained in:
parent
0f2958aed4
commit
1d1f194d59
2 changed files with 22 additions and 0 deletions
|
@ -210,6 +210,7 @@ class ChangesetController < ApplicationController
|
|||
changesets = conditions_time(changesets, params['time'])
|
||||
changesets = conditions_open(changesets, params['open'])
|
||||
changesets = conditions_closed(changesets, params['closed'])
|
||||
changesets = conditions_ids(changesets, params['changesets'])
|
||||
|
||||
# create the results document
|
||||
results = OSM::API.new.get_xml_doc
|
||||
|
@ -413,6 +414,20 @@ private
|
|||
end
|
||||
end
|
||||
|
||||
##
|
||||
# query changesets by a list of ids
|
||||
# (either specified as array or comma-separated string)
|
||||
def conditions_ids(changesets, ids)
|
||||
if ids.nil?
|
||||
return changesets
|
||||
elsif ids.empty?
|
||||
raise OSM::APIBadUserInput.new("No changesets were given to search for")
|
||||
else
|
||||
ids = ids.split(',').collect { |n| n.to_i }
|
||||
return changesets.where(:id => ids)
|
||||
end
|
||||
end
|
||||
|
||||
##
|
||||
# eliminate empty changesets (where the bbox has not been set)
|
||||
# this should be applied to all changeset list displays
|
||||
|
|
|
@ -1543,6 +1543,13 @@ EOF
|
|||
get :query, :closed => 'true', :user => users(:public_user).id
|
||||
assert_response :success, "can't get changesets by closed-ness and user"
|
||||
assert_changesets [7]
|
||||
|
||||
get :query, :changesets => '1,2,3'
|
||||
assert_response :success, "can't get changesets by id (as comma-separated string)"
|
||||
assert_changesets [1,2,3]
|
||||
|
||||
get :query, :changesets => ''
|
||||
assert_response :bad_request, "should be a bad request since changesets is empty"
|
||||
end
|
||||
|
||||
##
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue