source: subversion/applications/utils/amf/amf_finddeleted.rb @ 25070

Last change on this file since 25070 was 13609, checked in by richard, 11 years ago

example of calling amf_controller from outside Flash

File size: 1.9 KB
Line 
1#!/usr/bin/ruby
2
3require 'rubygems'
4require 'httpclient'
5require 'amf_lib'
6require 'stringio'
7
8url='http://www.openstreetmap.org/api/0.5/amf/read'
9c=HTTPClient.new
10bbox=[-1.4916,51.88447,-1.46949,51.86895]
11
12# =========================================================================
13# Demonstration of how to talk to amf_controller from outside Flash
14#
15# This example gets a list of deleted ways within the bbox, fetches each
16# deleted way, then outputs them in Potlatch's array format
17# =========================================================================
18
19# Get list of ways
20
21amf =0.chr+0.chr                                                # FP8
22amf+=0.chr+0.chr                                                # no headers
23amf+=0.chr+1.chr                                                # one body
24
25amf+=encodestring("whichways_deleted")  # message
26amf+=encodestring("1")                                  # unique ID for this message
27amf+=encodelong(0)                                              # size of body in bytes, Potlatch ignores this
28amf+=encodevalue(bbox)                                  # argument
29resp=c.request('post',url,nil,amf)
30
31# Parse response
32
33r=StringIO.new(resp.content)
34r.read(6)                                                               # we can ignore the first 6 chars
35until r.eof?
36        getstring(r)                                            # this should be 1/onResult
37        getstring(r)                                            # this should be 'null'
38        r.read(4)                                                       # this should be -1
39        ways=getvalue(r)                                        # this should be the value
40end
41
42# Get each way
43
44for id in ways.flatten
45        puts id.to_i
46
47        # Send the request
48        amf =0.chr+0.chr+0.chr+0.chr+0.chr+1.chr
49        amf+=encodestring("getway_old")
50        amf+=encodestring("1")+encodelong(0)
51        args=[id,-1]
52        amf+=encodevalue(args)
53        resp=c.request('post',url,nil,amf)
54
55        # Parse the content
56        r=StringIO.new(resp.content)
57        r.read(6)
58        until r.eof?
59                getstring(r)                                            # this should be 1/onResult
60                getstring(r)                                            # this should be 'null'
61                r.read(4)                                                       # this should be -1
62                deleted=getvalue(r)                                     # this should be the value
63                puts deleted.inspect
64
65                # ******
66                # we now have the deleted way (id) returned in Potlatch format:
67                #   [0, id, array of points, hash of tags, version]
68                # where each point is
69                #   [lat,lon,id,0,hash of tags]
70                # ******
71
72                puts
73        end
74end
Note: See TracBrowser for help on using the repository browser.