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
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
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
##