- raise OSM::APIBadUserInput.new("No lat was given") unless params['lat']
- raise OSM::APIBadUserInput.new("No lon was given") unless params['lon']
- raise OSM::APIBadUserInput.new("No text was given") unless params['text']
-
- lon = params['lon'].to_f
- lat = params['lat'].to_f
- comment = params['text']
-
- name = "NoName";
- name = params['name'] if params['name'];
-
- @bug = MapBug.create_bug(lat, lon)
+ raise OSM::APIBadUserInput.new("No lat was given") unless params['lat']
+ raise OSM::APIBadUserInput.new("No lon was given") unless params['lon']
+ raise OSM::APIBadUserInput.new("No text was given") unless params['text']
+
+ lon = params['lon'].to_f
+ lat = params['lat'].to_f
+ comment = params['text']
+
+ name = "NoName"
+ name = params['name'] if params['name']
+
+ #Include in a transaction to ensure that there is always a map_bug_comment for every map_bug
+ MapBug.transaction do
+ @bug = MapBug.create_bug(lat, lon)
+
+ #TODO: move this into a helper function
+ begin
+ url = "http://nominatim.openstreetmap.org/reverse?lat=" + lat.to_s + "&lon=" + lon.to_s + "&zoom=16"
+ response = REXML::Document.new(Net::HTTP.get(URI.parse(url)))
+
+ if result = response.get_text("reversegeocode/result")
+ @bug.nearby_place = result.to_s
+ else
+ @bug.nearby_place = "unknown"
+ end
+ rescue Exception => err
+ @bug.nearby_place = "unknown"
+ end