-
- bodies=AMF.getint(req) # Read number of bodies
- render :content_type => "application/x-amf", :text => proc { |response, output|
- a,b=bodies.divmod(256)
- output.write 0.chr+0.chr+0.chr+0.chr+a.chr+b.chr
- 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)
- result=''
- logger.info("Executing AMF #{message}(#{args.join(',')}):#{index}")
-
- case message
- when 'getpresets'; result=AMF.putdata(index,getpresets(*args))
- when 'whichways'; result=AMF.putdata(index,whichways(*args))
- when 'whichways_deleted'; result=AMF.putdata(index,whichways_deleted(*args))
- when 'getway'; result=AMF.putdata(index,getway(args[0].to_i))
- when 'getrelation'; result=AMF.putdata(index,getrelation(args[0].to_i))
- when 'getway_old'; result=AMF.putdata(index,getway_old(args[0].to_i,args[1]))
- when 'getway_history'; result=AMF.putdata(index,getway_history(args[0].to_i))
- when 'getnode_history'; result=AMF.putdata(index,getnode_history(args[0].to_i))
- when 'findgpx'; result=AMF.putdata(index,findgpx(*args))
- when 'findrelations'; result=AMF.putdata(index,findrelations(*args))
- when 'getpoi'; result=AMF.putdata(index,getpoi(*args))
- end
- output.write(result)
- end
- }
- else
- render :nothing => true, :status => :method_not_allowed