headers.times do # Read each header
name=getstring(req) # |
- req.getc # | skip boolean
+ req.getc # | skip boolean
value=getvalue(req) # |
- header["name"]=value # |
+ header["name"]=value # |
end
bodies=getint(req) # Read number of bodies
bodies.times do # Read each body
- message=getstring(req) # | get message name
- index=getstring(req) # | get index in response sequence
+ message=getstring(req) # | get message name
+ index=getstring(req) # | get index in response sequence
bytes=getlong(req) # | get total size in bytes
args=getvalue(req) # | get response (probably an array)
case message
when 'getpresets'; results[index]=putdata(index,getpresets)
- when 'whichways'; results[index]=putdata(index,whichways(args))
+ 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 'deleteway'; results[index]=putdata(index,deleteway(args))
end
end
def whichways(args)
waylist=WaySegment.find_by_sql("SELECT DISTINCT current_way_segments.id AS wayid"+
- " FROM current_way_segments,current_segments,current_nodes "+
+ " FROM current_way_segments,current_segments,current_nodes,current_ways "+
" WHERE segment_id=current_segments.id "+
" AND current_segments.visible=1 "+
" AND node_a=current_nodes.id "+
+ " AND current_ways.id=current_way_segments.id "+
+ " AND current_ways.visible=1 "+
" AND (latitude BETWEEN "+(args[1].to_f-0.01).to_s+" AND "+(args[3].to_f+0.01).to_s+") "+
" AND (longitude BETWEEN "+(args[0].to_f-0.01).to_s+" AND "+(args[2].to_f+0.01).to_s+")")
" AND cs1.id IS NULL AND cs2.id IS NULL "+
" AND current_nodes.visible=1")
- points = pointlist.collect {|a| [a['id'],tag2array(a['tags'])] } # get a list of node ids and their tags
+ points = pointlist.collect {|a| [a['id'],tag2array(a['tags'])] } # get a list of node ids and their tags
return [ways,points]
end
end
# ----- putway (user token, way, array of co-ordinates, array of attributes,
- # baselong, basey, masterscale)
- # returns current way ID, new way ID, hash of renumbered nodes,
- # xmin,xmax,ymin,ymax
+ # baselong, basey, masterscale)
+ # returns current way ID, new way ID, hash of renumbered nodes,
+ # xmin,xmax,ymin,ymax
def putway(args)
usertoken,originalway,points,attributes,baselong,basey,masterscale=args
id2=row['id2'].to_i; xc[id2]=row['long2'].to_f; yc[id2]=row['lat2'].to_f; tagc[id2]=row['tags2']
seg[row['segment_id'].to_i]=id1.to_s+'-'+id2.to_s
}
+ ActiveRecord::Base.connection.update("UPDATE current_ways SET timestamp=#{db_now},user_id=#{uid},visible=1 WHERE id=#{way}")
else
way=ActiveRecord::Base.connection.insert("INSERT INTO current_ways (user_id,timestamp,visible) VALUES (#{uid},#{db_now},1)")
end
end
# ----- deleteway (user token, way)
- # returns way ID only
+ # returns way ID only
def deleteway(args)
usertoken,way=args