- RAILS_DEFAULT_LOGGER.info(" Response: start")
- a,b=results.length.divmod(256)
- 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
-
- private
-
- # ====================================================================
- # Remote calls
-
- # ----- getpresets
- # return presets,presetmenus and presetnames arrays
-
- def getpresets
- presets={}
- presetmenus={}; presetmenus['point']=[]; presetmenus['way']=[]; presetmenus['POI']=[]
- presetnames={}; presetnames['point']={}; presetnames['way']={}; presetnames['POI']={}
- presettype=''
- presetcategory=''
-
- RAILS_DEFAULT_LOGGER.info(" Message: getpresets")
-
- # File.open("config/potlatch/presets.txt") do |file|
-
- # Temporary patch to get around filepath problem
- # To remove this patch and make the code nice again:
- # 1. uncomment above line
- # 2. fix the path in the above line
- # 3. delete this here document, and the following line (StringIO....)
-
- txt=<<-EOF
-way/road
-motorway: highway=motorway,ref=(type road number)
-trunk road: highway=trunk,ref=(type road number),name=(type road name)
-primary road: highway=primary,ref=(type road number),name=(type road name)
-secondary road: highway=secondary,ref=(type road number),name=(type road name)
-residential road: highway=residential,name=(type road name)
-unclassified road: highway=unclassified,name=(type road name)
-
-way/footway
-footpath: highway=footway,foot=yes
-bridleway: highway=bridleway,foot=yes
-byway: highway=unsurfaced,foot=yes
-permissive path: highway=footway,foot=permissive
-
-way/cycleway
-cycle lane: highway=cycleway,cycleway=lane,ncn_ref=
-cycle track: highway=cycleway,cycleway=track,ncn_ref=
-cycle lane (NCN): highway=cycleway,cycleway=lane,name=(type name here),ncn_ref=(type route number)
-cycle track (NCN): highway=cycleway,cycleway=track,name=(type name here),ncn_ref=(type route number)
-
-way/waterway
-canal: waterway=canal,name=(type name here)
-navigable river: waterway=river,boat=yes,name=(type name here)
-navigable drain: waterway=drain,boat=yes,name=(type name here)
-derelict canal: waterway=derelict_canal,name=(type name here)
-unnavigable river: waterway=river,boat=no,name=(type name here)
-unnavigable drain: waterway=drain,boat=no,name=(type name here)
-
-way/railway
-railway: railway=rail
-tramway: railway=tram
-light railway: railway=light_rail
-preserved railway: railway=preserved
-disused railway tracks: railway=disused
-course of old railway: railway=abandoned
-
-way/natural
-lake: landuse=water
-forest: landuse=forest
-
-point/road
-mini roundabout: highway=mini_roundabout
-traffic lights: highway=traffic_signals
-
-point/footway
-bridge: highway=bridge
-gate: highway=gate
-stile: highway=stile
-cattle grid: highway=cattle_grid
-
-point/cycleway
-gate: highway=gate
-
-point/waterway
-lock gate: waterway=lock_gate
-weir: waterway=weir
-aqueduct: waterway=aqueduct
-winding hole: waterway=turning_point
-mooring: waterway=mooring
-
-point/railway
-station: railway=station
-viaduct: railway=viaduct
-level crossing: railway=crossing
-
-point/natural
-peak: point=peak
-
-POI/road
-car park: amenity=parking
-petrol station: amenity=fuel
-
-POI/cycleway
-bike park: amenity=bicycle_parking
-
-POI/place
-city: place=city,name=(type name here),is_in=(type region or county)
-town: place=town,name=(type name here),is_in=(type region or county)
-suburb: place=suburb,name=(type name here),is_in=(type region or county)
-village: place=village,name=(type name here),is_in=(type region or county)
-hamlet: place=hamlet,name=(type name here),is_in=(type region or county)
-
-POI/tourism
-attraction: tourism=attraction,amenity=,religion=,denomination=
-church: tourism=,amenity=place_of_worship,name=(type name here),religion=christian,denomination=(type denomination here)
-hotel: tourism=hotel,amenity=,religion=,denomination=
-other religious: tourism=,amenity=place_of_worship,name=(type name here),religion=(type religion),denomination=
-post box: amenity=post_box,tourism=,name=,religion=,denomination=
-post office: amenity=post_office,tourism=,name=,religion=,denomination=
-pub: tourism=,amenity=pub,name=(type name here),religion=,denomination=
-
-POI/natural
-peak: point=peak
-EOF
-
- StringIO.open(txt) do |file|
- file.each_line {|line|
- t=line.chomp
- if (t=~/(\w+)\/(\w+)/) then
- presettype=$1
- presetcategory=$2
- presetmenus[presettype].push(presetcategory)
- presetnames[presettype][presetcategory]=["(no preset)"]
- elsif (t=~/^(.+):\s?(.+)$/) then
- pre=$1; kv=$2
- presetnames[presettype][presetcategory].push(pre)
- presets[pre]={}
- kv.split(',').each {|a|
- if (a=~/^(.+)=(.*)$/) then presets[pre][$1]=$2 end
- }
+ bodies=AMF.getint(req) # Read number of bodies
+ bodies.times do # Read each body
+ message=AMF.getstring(req) # | get message name
+ index=AMF.getstring(req) # | get index in response sequence
+ bytes=AMF.getlong(req) # | get total size in bytes
+ args=AMF.getvalue(req) # | get response (probably an array)
+ logger.info("Executing AMF #{message}:#{index}")
+
+ case message
+ when 'getpresets'; results[index]=AMF.putdata(index,getpresets())
+ when 'whichways'; results[index]=AMF.putdata(index,whichways(*args))
+ when 'whichways_deleted'; results[index]=AMF.putdata(index,whichways_deleted(*args))
+ when 'getway'; r=AMF.putdata(index,getway(args[0].to_i))
+ results[index]=r
+ when 'getrelation'; results[index]=AMF.putdata(index,getrelation(args[0].to_i))
+ when 'getway_old'; results[index]=AMF.putdata(index,getway_old(args[0].to_i,args[1]))
+ when 'getway_history'; results[index]=AMF.putdata(index,getway_history(args[0].to_i))
+ when 'getnode_history'; results[index]=AMF.putdata(index,getnode_history(args[0].to_i))
+ when 'findgpx'; results[index]=AMF.putdata(index,findgpx(*args))
+ when 'findrelations'; results[index]=AMF.putdata(index,findrelations(*args))
+ when 'getpoi'; results[index]=AMF.putdata(index,getpoi(*args))