changesets = conditions_bbox(changesets, bbox)
changesets = conditions_user(changesets, params["user"], params["display_name"])
changesets = conditions_time(changesets, params["time"])
+ changesets = conditions_from_to(changesets, params["from"], params["to"])
changesets = conditions_open(changesets, params["open"])
changesets = conditions_closed(changesets, params["closed"])
changesets = conditions_ids(changesets, params["changesets"])
raise OSM::APIBadUserInput, e.message.to_s
end
+ ##
+ # restrict changesets to those opened during a particular time period
+ # works similar to from..to of notes controller, including the requirement of 'from' when specifying 'to'
+ def conditions_from_to(changesets, from, to)
+ if from
+ begin
+ from = Time.parse(from).utc
+ rescue ArgumentError
+ raise OSM::APIBadUserInput, "Date #{from} is in a wrong format"
+ end
+
+ begin
+ to = if to
+ Time.parse(to).utc
+ else
+ Time.now.utc
+ end
+ rescue ArgumentError
+ raise OSM::APIBadUserInput, "Date #{to} is in a wrong format"
+ end
+
+ changesets.where(:created_at => from..to)
+ else
+ changesets
+ end
+ end
+
##
# return changesets which are open (haven't been closed yet)
# we do this by seeing if the 'closed at' time is in the future. Also if we've