X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/2c5ffbaaaf5f61f8c8162f32ec0fc5a0ac0e7a21..84b67e00a07262139f2cc9e9460f4afd35e91349:/app/controllers/amf_controller.rb diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index 2bd98707a..5fe9b45cb 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -33,27 +33,27 @@ class AmfController < ApplicationController bytes=getlong(req) # | get total size in bytes args=getvalue(req) # | get response (probably an array) - ActiveRecord::Base.logger.info(" Message: #{message}") - case message - when 'getpresets'; results[index]=putdata(index,getpresets) - when 'whichways'; results[index]=putdata(index,whichways(args)) - when 'getway'; results[index]=putdata(index,getway(args)) - when 'putway'; results[index]=putdata(index,putway(args)) - when 'deleteway'; results[index]=putdata(index,deleteway(args)) + when 'getpresets'; results[index]=putdata(index,getpresets) + when 'whichways'; results[index]=putdata(index,whichways(args)) + when 'getway'; results[index]=putdata(index,getway(args)) + when 'putway'; results[index]=putdata(index,putway(args)) + when 'deleteway'; results[index]=putdata(index,deleteway(args)) end end # ------------------ # Write out response - response.headers["Content-Type"]="application/x-amf" + RAILS_DEFAULT_LOGGER.info(" Response: start") a,b=results.length.divmod(256) - ans=0.chr+0.chr+0.chr+0.chr+a.chr+b.chr - results.each do |k,v| - ans+=v - end - render :text => ans + render :content_type => "application/x-amf", :text => proc { |response, output| + output.write 0.chr+0.chr+0.chr+0.chr+a.chr+b.chr + results.each do |k,v| + output.write(v) + end + } + RAILS_DEFAULT_LOGGER.info(" Response: end") end @@ -72,6 +72,8 @@ class AmfController < ApplicationController presettype='' presetcategory='' + RAILS_DEFAULT_LOGGER.info(" Message: getpresets") + # File.open("config/potlatch/presets.txt") do |file| # Temporary patch to get around filepath problem @@ -175,7 +177,7 @@ EOF xmax = args[2].to_f+0.01 ymax = args[3].to_f+0.01 - ActiveRecord::Base.logger.info(" Bounding Box: #{xmin},#{ymin},#{xmax},#{ymax}") + RAILS_DEFAULT_LOGGER.info(" Message: whichways, bbox=#{xmin},#{ymin},#{xmax},#{ymax}") waylist=WaySegment.find_by_sql("SELECT DISTINCT current_way_segments.id AS wayid"+ " FROM current_way_segments,current_segments,current_nodes,current_ways "+ @@ -215,6 +217,8 @@ EOF xmin = ymin = 999999 xmax = ymax = -999999 + RAILS_DEFAULT_LOGGER.info(" Message: getway, id=#{wayid}") + readwayquery(wayid).each {|row| xs1=long2coord(row['long1'].to_f,baselong,masterscale); ys1=lat2coord(row['lat1'].to_f,basey,masterscale) xs2=long2coord(row['long2'].to_f,baselong,masterscale); ys2=lat2coord(row['lat2'].to_f,basey,masterscale) @@ -249,6 +253,8 @@ EOF ActiveRecord::Base.connection.execute("SET #{db_now}=NOW()") originalway=originalway.to_i + RAILS_DEFAULT_LOGGER.info(" Message: putway, id=#{originalway}") + # -- 3. read original way into memory xc={}; yc={}; tagc={}; seg={} @@ -394,7 +400,7 @@ EOF insertsql ='' currentsql='' attributes.each do |k,v| - if v=='' then next end + if v=='' or v.nil? then next end if v[0,6]=='(type ' then next end if insertsql !='' then insertsql +=',' end if currentsql!='' then currentsql+=',' end @@ -414,6 +420,9 @@ EOF def deleteway(args) usertoken,way=args + + RAILS_DEFAULT_LOGGER.info(" Message: deleteway, id=#{way}") + uid=getuserid(usertoken); if !uid then return end way=way.to_i