1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
define_tag(
'getstations',
-namespace='weatherbug_',
-required='key',
-required='zip',
-priority='replace',
-description='Returns a list of WeatherBug stations in a zip code.'
);
local('url' = 'http://' + #key + '.api.wxbug.net/getStations.aspx');
local('getparams') = array(
'acode' = #key,
'zipcode' = #zip
);
local('response') = include_url(
#url,
-getparams=#getparams
);
#response->replace(' xmlns:aws="http://www.aws.com/aws"','')&replace('aws:','');
local('xmldata') = xml(#response);
local('stations') = #xmldata->extract('//station');
local('out' = array);
local('fields') = array(
'id',
'name',
'city',
'state',
'zipcode',
'distance',
'station-type'
);
iterate(#stations, local('s'));
#s = xml('<?xml version="1.0" encoding="utf-8" ?>' + #s);
local('map' = map);
iterate(#fields, local('f'));
local('v') = string(#s->extract('//@' + #f)->first)->split('="')->second;
#v->removetrailing('"');
#map->insert(#f = #v);
/iterate;
#out->insert(#map);
/iterate;
return(@#out);
/define_tag;
|